Bug 5465

Summary: Bad: Перестал работать tkabber
Product: Sisyphus Reporter: Maxim Tyurin <mrkooll>
Component: tkabberAssignee: Sergey Kalinin (BanZaj) <banzaj>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
workaround for conflict between tclx and memchan none

Description Maxim Tyurin 2004-11-08 10:46:32 MSK
Перестал работать tkabber.
При запуске, после авторизации на сервере, выводит окошко 
Ошибка: wrong # args: should be ""
более детальное описание:
wrong # args: should be ""
wrong # args: should be ""
    while executing
"random 1000000000"
    (procedure "jid_to_tag" line 8)
    invoked from within
"jid_to_tag $jid"
    (procedure "winid" line 4)
    invoked from within
"winid [chatid $connid $jid]"
    (procedure "chat::change_presence" line 51)
    invoked from within
"chat::change_presence $connid $from $show"
    ("default" arm line 36)
    invoked from within
"switch -- $type {
	error -
	unavailable {
            if {[cequal $type unavailable]} {
	        presence_process_x $connid $from $type $x
	    }

	  ..."
    (procedure "client:presence" line 9)
    invoked from within
"client:presence 1 wkaban@jabber.pibhe.com/Work {} {{x {xmlns jabber:x:delay
from wkaban@jabber.pibhe.com/Work stamp 20041107T02:06:47} {} {} {} {}} {x..."
    ("uplevel" body line 1)
    invoked from within
"uplevel #0  [list client:presence $connid $from $type $x] $param"
    ("presence" arm line 62)
    invoked from within
"switch -- $tag {
	iq {
	    set useid   0
	    set id ""
	    set type [wrapper:getattr $vars type]

	    if {[wrapper:isattr $vars id] == 1} {
		set ..."
    (procedure "::jlib::parse1" line 25)
    invoked from within
"::jlib::parse1 1 {presence {from wkaban@jabber.pibhe.com/Work to
mrkooll@jabber.pibhe.com} {{status {} {} Online Online {}} {priority {} {} 1 1
{}} {x..."
    ("after" script)

Если проскипать эти диалоги - то tkabber запускается, но родстер пустой.
Comment 1 Sergey Kalinin (BanZaj) 2004-11-11 03:10:55 MSK
Хмм   у меня не воспроизводиться (впрочем не только у меня)  ...
после чего он перестал работать?
Comment 2 Maxim Tyurin 2004-11-29 13:30:13 MSK
Перестал работать после обновления tcl (вроде).
Повторяется от нового пользователя.

Сервер jabberd версии 1.4.2

Клиент tkabber-0.9.7-alt2
tcl-8.4.7-alt2

Comment 3 Sergey Kalinin (BanZaj) 2004-11-30 04:57:44 MSK
вот тут есть два рецепта http://tkabber.jabber.ru/node/197

у меня проверить негде - тикл из поставки мастера 2.4 tcl-8.4.7-alt1

если получиться, пишите буду править пакет
Comment 4 Maxim Tyurin 2004-11-30 10:56:45 MSK
Значит сделал почти как в этом совете.

Т.к. у меня нет Help->Show Tcl console в tkabber поставил я tkcon и подключился
к процессу tkabber.

После чего ввел команды. Получил тот-же облом:
Main console display active (Tcl8.4.7 / Tk8.4.7)
(mrkooll) 1 % package require Tclx
8.4
(mrkooll) 2 % random 1000000000
wrong # args: should be ""
(mrkooll) 3 % 
Comment 5 Maxim Tyurin 2004-12-02 15:51:50 MSK
Значит так:
полная переустановка помогла.

Сносил tcl под корень (с выносом /usr/share/tcl и /usr/lib/tcl)

Потом переставил и он завелся. Видимо глюк был в обновлении tcl.

Т.е. делал так:
apt> remove tcl
apt> remove tcl-gpgme
apt> remove tcl-img
apt> remove tcl-sound
apt> commit
# rm -r /usr/share/tcl
# rm -r /usr/lib/tcl
apt> install tkabber
apt> install tcl-tkXwin
apt> install tcl-gpgme
....

Вроде все заработало.
Comment 6 Sergey Vlasov 2004-12-18 22:05:26 MSK
Заработало, вероятно, из-за удаления пакета tcl-memchan. Наблюдается конфликт
между tcl-memchan и tclx - оба пакета создают процедуру с именем random. Причём
ни один из этих пакетов не обязателен для работы tkabber.

На самом деле для проявления ошибки достаточно наличия в системе только пакета
tcl-memchan - при отсутствии tclx tkabber определяет свою версию процедуры
random, которая потом портится новым memchan.
Comment 7 Sergey Vlasov 2004-12-18 22:08:17 MSK
Created attachment 674 [details]
workaround for conflict between tclx and memchan

Можно обойти проблему вот таким кривым способом - сразу при запуске попытаться
загрузить пакеты, чтобы Memchan загрузился раньше, и его random был перекрыт
определением или из Tclx, или из эмуляции в Tclx.tcl.
Comment 8 Sergey Kalinin (BanZaj) 2005-07-06 04:11:35 MSD
Не удалось воспроизвести
Comment 9 Maxim Tyurin 2005-07-06 11:49:56 MSD
Да уже работает.

Как после полной переустановки тикля заработал так и работает до сих пор :)