URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2903
[ Назад ]

Исходное сообщение
"Краш при выделении памяти. Нужны объяснения"

Отправлено Vital , 07-Май-04 09:05 
Всем привет
Хотелось бы получить разъяснения станности работы программы.
Моя программа - демон, сидит в памяти и прекрасно работает, но время от времени происходит крушение по 11 сигналу. Вот что говорит отладчик:
-------------
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/mysql/libmysqlclient.so.10...done.
Loaded symbols for /usr/lib/mysql/libmysqlclient.so.10
Reading symbols from /lib/i686/libpthread.so.0...done.
Loaded symbols for /lib/i686/libpthread.so.0
Reading symbols from /lib/i686/libc.so.6...done.
Loaded symbols for /lib/i686/libc.so.6
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/i686/libm.so.6...done.
Loaded symbols for /lib/i686/libm.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
#0  0x400e8a21 in chunk_alloc (ar_ptr=0x4019d300, nb=16) at malloc.c:2878
2878    malloc.c: No such file or directory.
        in malloc.c
(gdb) up
#1  0x400e8828 in __libc_malloc (bytes=8) at malloc.c:2811
2811    in malloc.c
Current language:  auto; currently c
(gdb)
#2  0x0806d76d in __builtin_new (sz=8) at ../../gcc/cp/new1.cc:-1
-1      ../../gcc/cp/new1.cc: No such file or directory.
        in ../../gcc/cp/new1.cc
Current language:  auto; currently c++
(gdb)
#3  0x0806d8b0 in __builtin_vec_new (sz=8) at ../../gcc/cp/new2.cc:-1
-1      ../../gcc/cp/new2.cc: No such file or directory.
        in ../../gcc/cp/new2.cc
(gdb)
#4  0x0804b2a1 in string::string (this=0x4095b90c, Str=@0x4095b9ac, Replace=0x4095b92c "615", Start=1, Length=2)
    at string.inc:235
235                     theString = new char [length + 1];
(gdb)
---------

Как видно, крушение происходит при выделении памяти, причем, как я понял, в библиотечной функции chunk_alloc(). Происходит это в произвольный момент, код, который тут показан, вызывается довольно часто, памяти на сервере достаточно.
Почему это проиходит и как с этим бороться?
Кто может дать внятные разъяснение и рекомендации?


Содержание

Сообщения в этом обсуждении
"Краш при выделении памяти. Нужны объяснения"
Отправлено AnToXa , 07-Май-04 23:53 
компилишь с -pthread ?
попробуй -D_THREAD_SAFE -D_REENTRANT

"Краш при выделении памяти. Нужны объяснения"
Отправлено Vital , 08-Май-04 02:55 
>компилишь с -pthread ?
>попробуй -D_THREAD_SAFE -D_REENTRANT


ага, с потоками.. попробую .. а где можно вычитать по-подробнее что это за макросы?


"Краш при выделении памяти. Нужны объяснения"
Отправлено gt , 08-Май-04 21:22 
>>компилишь с -pthread ?
>>попробуй -D_THREAD_SAFE -D_REENTRANT
>
>
>ага, с потоками.. попробую .. а где можно вычитать по-подробнее что это
>за макросы?

в документации по stl.


"Краш при выделении памяти. Нужны объяснения"
Отправлено jd , 09-Май-04 22:27 
>ага, с потоками.. попробую .. а где можно вычитать по-подробнее что это
>за макросы?

info libc