The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Трабля"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Трабля"  +/
Сообщение от nikto on 05-Авг-11, 20:09 
Шлялся сегфолт по функциям, до белого каления довел, перелопатил все рядом располагающиеся функции.

3агнал таки падлюку сежду между двумя псевдо-отладочными вызовами write():
в исходниках сразу за write(100300, "1", 1) идет write(100400, "1", 1).

Кто-то может подсказать в чем трабла ???


вывод через strace:
"
...
getpid()                                = 4049
chdir("/home/bla-bla")                     = 0
stat64("bla-bla/lock", {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
write(100300, "1", 1)  
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
"

вывод через gdb:
"
Program received signal SIGSEGV, Segmentation fault.
0x4e3be25a in ?? ()
(gdb) backtrace
#0  0x4e3be25a in ?? ()
#1  0x400f1273 in write () from /lib/libc.so.6
#2  0x00000009 in ?? ()
#3  0xbffffe11 in ?? ()
#4  0x0804a986 in prep_main (ssn=0x8054a00) at lalala.c:800
#5  0x0804aa96 in main () at lalala.c:827
"

Ответить | Правка | Cообщить модератору

Оглавление

  • Трабля, ACCA, 21:44 , 05-Авг-11, (1)  

Сообщения по теме [Сортировка по времени | RSS]


1. "Трабля"  +/
Сообщение от ACCA (ok) on 05-Авг-11, 21:44 
> Шлялся сегфолт по функциям, до белого каления довел, перелопатил все рядом располагающиеся
> функции.
> 3агнал таки падлюку сежду между двумя псевдо-отладочными вызовами write():
> в исходниках сразу за write(100300, "1", 1) идет write(100400, "1", 1).
> Кто-то может подсказать в чем трабла ???

Кто такие 100300 и 100400? Что у тебя в /proc/sys/fs/file-max ?
А вообще похоже на то, что ты запахал file descriptor table к моменту вызова write.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Трабля"  +/
Сообщение от nikto on 05-Авг-11, 22:10 
> Кто такие 100300 и 100400? Что у тебя в /proc/sys/fs/file-max ?
> А вообще похоже на то, что ты запахал file descriptor table к
> моменту вызова write.

Призрачные дескрипторы:
>write(100300, "1", 1) = -1 EBADF (Bad file descriptor)

Eсли заменить вызов write() на read(), с заменой соответствующих параметров, картина не меняется.

Заработало:
в итоге переупорядочил и развернул тело функции prep_main и две ее локальные переменные типа int, char* сделал глобальными.

Похоже гороскоп для этой версий libc при старом расположении планет, переменных и функций был составлен не верно.
Хотя на других линях и фряхах все пучком было.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Трабля"  +/
Сообщение от Вова on 06-Авг-11, 18:54 
>> Шлялся сегфолт по функциям, до белого каления довел, перелопатил все рядом располагающиеся
>> функции.
>> 3агнал таки падлюку сежду между двумя псевдо-отладочными вызовами write():
>> в исходниках сразу за write(100300, "1", 1) идет write(100400, "1", 1).
>> Кто-то может подсказать в чем трабла ???
> Кто такие 100300 и 100400? Что у тебя в /proc/sys/fs/file-max ?
> А вообще похоже на то, что ты запахал file descriptor table к
> моменту вызова write.

Написано же -он так отладку осуществил, думая смотреть стрейсом. Есть код, который падает, он придумал обрамить его данными write в несуществующие дескрипторы. А упало именно в этих вызовах write! И так как упало именно в этих write(), то смыслом и пользой добавления данных вызовов является вытеснение вконтакта и прочих порноресурсов из рабочего времени разработчика. Когда думаешь о работе, часто приходят полезные сопутствующие мысли, которые вполне могут решить поставленную задачу. Как мы видим ниже из признания автора, так и произошло в данном случае.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру