The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"pqxx, оптимизация и Segmentaion fault"
Отправлено Alu, 19-Дек-07 09:37 
>==9480== Invalid read of size 4
>==9480==    at 0x4266901: __pthread_mutex_unlock_usercnt (in /lib/tls/libpthread-0.60.so)
>==9480==    by 0x426697F: pthread_mutex_unlock (in /lib/tls/libpthread-0.60.so)
>==9480==    by 0x806B448: CCriticalSectionHolder::unlock() (CriticalSection.h:73)

Скорее всего проблема в адресе переменной типа pthread_mutex_t, которая передаётся pthread_mutex_unlock(). Адрес этот битый. Ищите проблему начиная с обёртки для мьютекса(CCriticalSectionHolder).

>==9480== Invalid write of size 4
>==9480==    at 0x426690E: __pthread_mutex_unlock_usercnt (in /lib/tls/libpthread-0.60.so)
>==9480==    by 0x426697F: pthread_mutex_unlock (in /lib/tls/libpthread-0.60.so)

Проявление той же проблемы.

>==9480== Syscall param futex(futex) points to unaddressable byte(s)
>==9480==    at 0x4269791: __lll_mutex_unlock_wake (in /lib/tls/libpthread-0.60.so)
>==9480==    by 0x426697F: pthread_mutex_unlock (in /lib/tls/libpthread-0.60.so)
>==9480==    by 0x806B448: CCriticalSectionHolder::unlock() (CriticalSection.h:73)

Проявление той же проблемы.
>==9480==  Address 0xBEFFA001 is not stack'd, malloc'd or (recently) free'd

Адрес связанный с вышеописанной проблемой пренадлежит ни стеку, ни  куче. Т.е. имеет место прострел.

>как понять почему так получается?

Отлаживать :)  Внимательно проследить цикл жизни проблемных объектов, включая копирование.

>и что означают загадочные строчки "Address 0xBEFFA00D is just below the stack ptr"

Адрес располжен ниже указателя стека. Т.е. Той области, до которой стек не дорос. Часто такое бывает при выделении объекта на стеке внутри функции и последующей попытке использовать его вне этой функции.

>, "Address 0xBEFFA001 is not stack'd, malloc'd or (recently) free'd"?

Адрес связанный с вышеописанной проблемой пренадлежит ни стеку, ни  куче.

>[оверквотинг удален]
>==9480== Invalid read of size 4
>==9480==    at 0x8067D28: _STL::_Rb_tree_node<_STL::pair<_STL::basic_string<...
>==9480==    by 0x80673B3: _STL::_Rb_tree_iterator<_STL::pair<_STL::basic_string<...
>==9480==    by 0x8066884: _STL::map<_STL::basic_string<char, _STL::char_traits<...
>==9480==    by 0x80645F4: main
>==9480==  Address 0xAC is not stack'd, malloc'd or (recently) free'd
>==9480==
>==9480== Process terminating with default action of signal 11 (SIGSEGV): dumping core
>
>==9480==  Access not within mapped region at address 0xAC

Так как мап хранит копии объектов, думаю проблема в нём самом. Проследите его жизненный цикл.
Удачи.


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



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

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