LINUX.ORG.RU

«GDB и разделяемые библиотеки» или «пустой стэк в GDB возвращается».


0

0

Как-то я писал здесь (http://www.linux.org.ru/view-message.jsp?msgid=442903&back=view-group.jsp...) о том, что серваку пришел SIGSEGV, сервак свалился, а GDB мне пустой стэк выдал и даже не показал где ошибка произошла. Так вот седня совсем случайно заметил следующую вещь (привожу typescript файл):

"[root@radius chessd]# gdb
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux".
(gdb) file bin/chessd
Reading symbols from bin/chessd...done.
(gdb) attach 3822
Attaching to program: /usr/local/debug2-chessd/chessd/bin/chessd, Pid 3822
Reading symbols from /lib/libm.so.6...done.
Reading symbols from /lib/libdl.so.2...done.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
Reading symbols from /usr/local/debug2-chessd/chessd/./lib/chessd.so...done.
0x1f717e in __select () from /lib/libc.so.6
(gdb) bt
#0 0x1f717e in __select () from /lib/libc.so.6
#1 0x2ac73c in ?? () from /usr/local/debug2-chessd/chessd/./lib/chessd.so
#2 0x8048d78 in main_event_loop () at ficsmain.c:90
#3 0x8049222 in main (argc=5, argv=0xbffffa44) at ficsmain.c:232
(gdb) f 1
#1 0x2ac73c in ?? () from /usr/local/debug2-chessd/chessd/./lib/chessd.so
(gdb) l
175 snprintf(cmd, sizeof(cmd), "/home/fics/bin/backtrace %d > /home/fics/chessd/segv_%d 2>&1",
176 (int)getpid(), (int)getpid());
177 system(cmd);
178 _exit(1);
179 }
180
181 int main(int argc, char *argv[])
182 {
183 int i, foreground, port;
184 void (*timeseal_init)(const char * ) = chessd_function("timeseal_init");
(gdb) quit
The program is running. Quit anyway (and detach it)? (y or n) y
Detaching from program: /usr/local/debug2-chessd/chessd/bin/chessd, Pid 3822
Press any key to continue..."

Это что, простите: "#1 0x2ac73c in ?? () from /usr/local/debug2-chessd/chessd/./lib/chessd.so"?

Странный путь какой-то, однако. Функция не указана. То что выдал 'list' тоже на брехню очень похоже.

Не знаю как это с пустым стэком связано. Но с тем, что GDB мне функцию, в которой произошла ошибка сегментации, не выдал, я думаю, это связано непосредственно.


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.