Понимание обратного пути gdb

#gdb

Вопрос:

Я последовательно получаю обратную дорожку gdb, показанную ниже. Будет ли это указывать на неудачу в выполнении malloc( ) ? Если это так, я также разрешаю «free-m» запускать в Linux-коробке, и я, похоже, не могу найти несоответствие. xsd__anyType-это типовое значение soap_dom_element

 (gdb) bt
#0  0x0000007f9af24090 in raise () from /tmp/../lib/libc.so.6
#1  0x0000007f9af12894 in abort () from /tmp/../lib/libc.so.6
#2  0x0000007f9af5c950 in ?? () from /tmp/../lib/libc.so.6
#3  0x0000007f9af62d64 in ?? () from /tmp/../lib/libc.so.6
#4  0x0000007f9af66158 in ?? () from /tmp/../lib/libc.so.6
#5  0x0000007f9af67550 in malloc () from /tmp/../lib/libc.so.6
#6  0x0000007f9b8b909c in soap_malloc () from /opt/ad/lib/libjci_gsoap.so
#7  0x0000007f9b8d4d40 in ?? () from /opt/ad/lib/libjci_gsoap.so
#8  0x0000007f9b8d5834 in soap_in_xsd__anyType(soap*, char const*, soap_dom_element*, char const*) () from /opt/ad/lib/libjci_gsoap.so
#9  0x0000007f9b8d5874 in soap_in_xsd__anyType(soap*, char const*, soap_dom_element*, char const*) () from /opt/ad/lib/libjci_gsoap.so
#10 0x0000007f9b8d5874 in soap_in_xsd__anyType(soap*, char const*, soap_dom_element*, char const*) () from /opt/ad/lib/libjci_gsoap.so
#11 0x0000007f9b8d5874 in soap_in_xsd__anyType(soap*, char const*, soap_dom_element*, char const*) () from /opt/ad/lib/libjci_gsoap.so
#12 0x0000007f9b8d6fe4 in operator>>(std::istreamamp;, soap_dom_elementamp;) () from /opt/ad/lib/libjci_gsoap.so
#13 0x0000000000507274 in tev::Events::getSubscriptionReference[abi:cxx11](char const*) const (this=this@entry=0x7f99eb25b0,
    msgBuf=0x7f99ec0218 "POST /onvif/event_service HTTP/1.0rnContent-Type: application/soap xml; charset=utf-8rnHost: 192.168.184.35rnContent-Length: 1438rnAccept-Encoding: gzip, deflaternX-Forwarded-For: ::ffff:192.168.185.1"...) at /home/jbloomrp/sandboxes/acvs-illustra-global/toolchain/arm/linaro-aarch64-2018.08-gcc8.2/work/amb_cv22_evk/arm/release/linaro-aarch64-2018.08-gcc8.2/aarch64-linux-gnu/include/c  /8.2.1/bits/unique_ptr.h:342
 

Если malloc потерпит неудачу, то я должен увидеть, что он движется по спирали к 0, что, похоже, не так.

 Swap:             0           0           0
              total        used        free      shared  buff/cache   available
Mem:           1983         995         703         147         285         826


Swap:             0           0           0
              total        used        free      shared  buff/cache   available
Mem:           1983        1038         659         147         285         782
Swap:             0           0           0
 

Даже на самом низком уровне я мог видеть, что свободный мем все еще составлял 659.

Комментарии:

1. Недостаточно контекста, но распределители в целом иногда могут обнаруживать, когда память повреждена (использование после освобождения, переполнение границ и т. Д.), И вполне возможно, что это то, что здесь прерывается.

2. Вы не получаете никакого сообщения об ошибке? (Наиболее распространенной причиной malloc проблем является то, что в какой-то более ранний момент времени внутренние данные диспетчера памяти были повреждены. Конечная причина может быть далека от симптомов и для ее определения может потребоваться много времени.)

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

4. Я бы рекомендовал вам перестроить вашу программу с дополнительными флагами сборки: -g --fsanitize=address затем, когда появится сообщение об ошибке, скопируйте журналы вставки, а затем просто задайте новый вопрос SO.

5. Вы анализируете core дамп с другой машины?