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: