Я в растерянности. Вот что происходит в GDB:
571 void *aux = realloc(cs->body, new_size);
(gdb) p cs->body
$6 = 0x627b20 "POST /upload HTTP/1.1\r\nUser-Agent: curl/7.22.0 (x86_64-unknown-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.0e zlib/1.2.5 c-ares/1.7.5 libidn/1.22 libssh2/1.2.9\r\nHost: localhost:2001\r\nAccept: */*\r\nContent-Le"...
(gdb) n
*** glibc detected *** /home/pc/bin/main: realloc(): invalid pointer: 0x0000000000627b20 ***
... далеко за картой обратной трассировки и памяти (которую я не знаю, как интерпретировать):
Program received signal SIGABRT, Aborted.
0x00007ffff7660d95 in raise () from /lib64/libc.so.6
Как это возможно? Я напечатал cs->body
прямо перед вызовом realloc, и это выглядит нормально, верно? Как это может быть неверный указатель, но все равно содержать символы просто отлично?
Как я могу отладить этот segfault?