[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ещё один глюк трея в icewm?



On Wed Oct 21 08:41:38 2009
Alexander Galanin wrote:

>>>>>> grep 'icewm.*segfault' /var/log/messages
>>>>> Oct 20 08:00:01 debian kernel: [  174.189321] icewm[3062]: segfault at
>>>>> 12a4 ip b7c033b3 sp bf8144a4 error 4 in libc-2.7.so[b7b8d000+155000]
>>>> По-моему так:
>>>> NetStatus::updateToolTip -> sprintf -> vsprintf -> vfprintf -> strlen
>>>> Из-под LANG=C уже не падает.
>>> В какой локали падает?
>> В которой sprintf(status,...) не влезает в char status[400]. 
>> ltrace показывает, что в C оно уже под 200.
> В моей юникодной кодировке там 280 получается. При этом в графе "online
> time" написан какой-то бред, а в конце стоит странная строчка "(null)".
> Соответственно, поправить проблему увеличением размера строки status не
> выходит.
> Лично я подозреваю вызываемый там gettext() в том, что он память попортил.

Чем удобряли, то и выросло:

msgid ""
"Interface %s:\n"
"  Current rate (in/out):\t%li %s/%li %s\n"
"  Current average (in/out):\t%lli %s/%lli %s\n"
"  Total average (in/out):\t%li %s/%li %s\n"
"  Transferred (in/out):\t%lli %s/%lli %s\n"
"  Online time:\t%ld:%02ld:%02ld%s%s"
msgstr ""
"Интерфейс %s:\n"
"  Текущая скорость (ввод/вывод):\t%lli %s/%lli %s\n"
"  Средняя скорость (ввод/вывод):\t%lli %s/%lli %s\n"
"  Переслано данных (ввод/вывод):\t%lli %s/%lli %s\n"
"  Время на линии:\t%d:%02d:%02d%s%s"

Исправил - работает.

Michael


Reply to: