Błąd pamięci - co znaczy log
Ostatnio zmodyfikowano 2014-01-18 16:43
roserek Temat założony przez niniejszego użytkownika |
Błąd pamięci - co znaczy log » 2014-01-17 14:53:18 Co jakiś czas wywala mi program wyświetlając taki log. Zapewne chodzi o pamięć. Ale ie potrafię nic sensownego odczytać z tego , jeśli się da jakąś informacje wyciągnąć to proszę o jakieś wskazówki. Z góry dziękuję za pomoc ;) *** glibc detected *** ./deamon: free(): invalid pointer: 0x000000000127aae8 *** ======= Backtrace: ========= /lib/libc.so.6(+0x71e16)[0x7fdb352a1e16] /lib/libc.so.6(cfree+0x6c)[0x7fdb352a6b8c] /usr/lib/libstdc++.so.6(_ZNSsD1Ev+0x39)[0x7fdb34d42ee9] ./deamon(_Z9onMessageP11AMQPMessage+0xec)[0x42192e] ./deamon(_ZN9AMQPQueue18sendConsumeCommandEv+0xba9)[0x4354cb] ./deamon(_ZN9AMQPQueue7ConsumeEs+0x2a)[0x4348e2] ./deamon(_Z3addPv+0x1d2)[0x421d01] /lib/libpthread.so.0(+0x68ca)[0x7fdb357ae8ca] /lib/libc.so.6(clone+0x6d)[0x7fdb352ffb6d] ======= Memory map: ======== 00400000-00443000 r-xp 00000000 b6:ea6e1 386333 /root/deamon/deamon 00642000-00644000 rw-p 00042000 b6:ea6e1 386333 /root/deamon/deamon 01026000-0224f000 rw-p 00000000 00:00 0 [heap] 7fdb24000000-7fdb24021000 rw-p 00000000 00:00 0 7fdb24021000-7fdb28000000 ---p 00000000 00:00 0 7fdb2ac90000-7fdb2ac91000 ---p 00000000 00:00 0 7fdb2ac91000-7fdb2b491000 rw-p 00000000 00:00 0 7fdb2b491000-7fdb2b492000 ---p 00000000 00:00 0 7fdb2b492000-7fdb2bc92000 rw-p 00000000 00:00 0 7fdb2bc92000-7fdb2bc9e000 r-xp 00000000 b6:ea6e1 435 /lib/libnss_files-2.11.3.so 7fdb2bc9e000-7fdb2be9d000 ---p 0000c000 b6:ea6e1 435 /lib/libnss_files-2.11.3.so 7fdb2be9d000-7fdb2be9e000 r--p 0000b000 b6:ea6e1 435 /lib/libnss_files-2.11.3.so 7fdb2be9e000-7fdb2be9f000 rw-p 0000c000 b6:ea6e1 435 /lib/libnss_files-2.11.3.so 7fdb2be9f000-7fdb2bea5000 r-xp 00000000 b6:ea6e1 32014 /usr/lib/libogg.so.0.7.0 7fdb2bea5000-7fdb2c0a4000 ---p 00006000 b6:ea6e1 32014 /usr/lib/libogg.so.0.7.0 7fdb2c0a4000-7fdb2c0a5000 rw-p 00005000 b6:ea6e1 32014 /usr/lib/libogg.so.0.7.0 7fdb2c0a5000-7fdb2c0fb000 r-xp 00000000 b6:ea6e1 31994 /usr/lib/liborc-0.4.so.0.0.0 7fdb2c0fb000-7fdb2c2fa000 ---p 00056000 b6:ea6e1 31994 /usr/lib/liborc-0.4.so.0.0.0 7fdb2c2fa000-7fdb2c2ff000 rw-p 00055000 b6:ea6e1 31994 /usr/lib/liborc-0.4.so.0.0.0 7fdb2c2ff000-7fdb2c304000 r-xp 00000000 b6:ea6e1 29487 /usr/lib/libXdmcp.so.6.0.0 7fdb2c304000-7fdb2c503000 ---p 00005000 b6:ea6e1 29487 /usr/lib/libXdmcp.so.6.0.0 7fdb2c503000-7fdb2c504000 rw-p 00004000 b6:ea6e1 29487 /usr/lib/libXdmcp.so.6.0.0 7fdb2c504000-7fdb2c506000 r-xp 00000000 b6:ea6e1 29458 /usr/lib/libXau.so.6.0.0 7fdb2c506000-7fdb2c706000 ---p 00002000 b6:ea6e1 29458 /usr/lib/libXau.so.6.0.0 7fdb2c706000-7fdb2c707000 rw-p 00002000 b6:ea6e1 29458 /usr/lib/libXau.so.6.0.0 7fdb2c707000-7fdb2c732000 r-xp 00000000 b6:ea6e1 32030 /usr/lib/libvorbis.so.0.4.4 7fdb2c732000-7fdb2c932000 ---p 0002b000 b6:ea6e1 32030 /usr/lib/libvorbis.so.0.4.4 7fdb2c932000-7fdb2c933000 rw-p 0002b000 b6:ea6e1 32030 /usr/lib/libvorbis.so.0.4.4 7fdb2c933000-7fdb2cbe6000 r-xp 00000000 b6:ea6e1 32037 /usr/lib/libvorbisenc.so.2.0.7 7fdb2cbe6000-7fdb2cde5000 ---p 002b3000 b6:ea6e1 32037 /usr/lib/libvorbisenc.so.2.0.7 7fdb2cde5000-7fdb2ce01000 rw-p 002b2000 b6:ea6e1 32037 /usr/lib/libvorbisenc.so.2.0.7 7fdb2ce01000-7fdb2ce4d000 r-xp 00000000 b6:ea6e1 32021 /usr/lib/libtheora.so.0.3.10 7fdb2ce4d000-7fdb2d04d000 ---p 0004c000 b6:ea6e1 32021 /usr/lib/libtheora.so.0.3.10 7fdb2d04d000-7fdb2d04e000 rw-p 0004c000 b6:ea6e1 32021 /usr/lib/libtheora.so.0.3.10 7fdb2d04e000-7fdb2d066000 r-xp 00000000 b6:ea6e1 32008 /usr/lib/libspeex.so.1.5.0 7fdb2d066000-7fdb2d266000 ---p 00018000 b6:ea6e1 32008 /usr/lib/libspeex.so.1.5.0 7fdb2d266000-7fdb2d267000 rw-p 00018000 b6:ea6e1 32008 /usr/lib/libspeex.so.1.5.0 7fdb2d267000-7fdb2d30d000 r-xp 00000000 b6:ea6e1 32002 /usr/lib/libschroedinger-1.0.so.0.3.0 7fdb2d30d000-7fdb2d50d000 ---p 000a6000 b6:ea6e1 32002 /usr/lib/libschroedinger-1.0.so.0.3.0 7fdb2d50d000-7fdb2d510000 rw-p 000a6000 b6:ea6e1 32002 /usr/lib/libschroedinger-1.0.so.0.3.0 7fdb2d510000-7fdb2d511000 rw-p 00000000 00:00 0 7fdb2d511000-7fdb2d530000 r-xp 00000000 b6:ea6e1 31988 /usr/lib/libopenjpeg-2.1.3.0.so 7fdb2d530000-7fdb2d72f000 ---p 0001f000 b6:ea6e1 31988 /usr/lib/libopenjpeg-2.1.3.0.so 7fdb2d72f000-7fdb2d731000 rw-p 0001e000 b6:ea6e1 31988 /usr/lib/libopenjpeg-2.1.3.0.so 7fdb2d731000-7fdb2d73d000 r-xp 00000000 b6:ea6e1 31982 /usr/lib/libgsm.so.1.0.12 7fdb2d73d000-7fdb2d93d000 ---p 0000c000 b6:ea6e1 31982 /usr/lib/libgsm.so.1.0.12 7fdb2d93d000-7fdb2d93e000 rw-p 0000c000 b6:ea6e1 31982 /usr/lib/libgsm.so.1.0.12 7fdb2d93e000-7fdb2d97d000 r-xp 00000000 b6:ea6e1 31976 /usr/lib/libfaad.so.2.0.0 7fdb2d97d000-7fdb2db7c000 ---p 0003f000 b6:ea6e1 31976 /usr/lib/libfaad.so.2.0.0 7fdb2db7c000-7fdb2db7f000 rw-p 0003e000 b6:ea6e1 31976 /usr/lib/libfaad.so.2.0.0 7fdb2db7f000-7fdb2dc12000 r-xp 00000000 b6:ea6e1 31970 /usr/lib/libdirac_encoder.so.0.1.0 7fdb2dc12000-7fdb2de11000 ---p 00093000 b6:ea6e1 31970 /usr/lib/libdirac_encoder.so.0.1.0 7fdb2de11000-7fdb2de16000 rw-p 00092000 b6:ea6e1 31970 /usr/lib/libdirac_encoder.so.0.1.0 7fdb2de16000-7fdb2de17000 rw-p 00000000 00:00 0 7fdb2de17000-7fdb2de3d000 r-xp 00000000 b6:ea6e1 3420 /usr/lib/libexpat.so.1.5.2 7fdb2de3d000-7fdb2e03d000 ---p 00026000 b6:ea6e1 3420 /usr/lib/libexpat.so.1.5.2 7fdb2e03d000-7fdb2e03f000 rw-p 00026000 b6:ea6e1 3420 /usr/lib/libexpat.so.1.5.2 7fdb2e03f000-7fdb2e05b000 r-xp 00000000 b6:ea6e1 276 /lib/libselinux.so.1 7fdb2e05b000-7fdb2e25a000 ---p 0001c000 b6:ea6e1 276 /lib/libselinux.so.1 7fdb2e25a000-7fdb2e25b000 r--p 0001b000 b6:ea6e1 276 /lib/libselinux.so.1 7fdb2e25b000-7fdb2e25c000 rw-p 0001c000 b6:ea6e1 276 /lib/libselinux.so.1 7fdb2e25c000-7fdb2e25d000 rw-p 00000000 00:00 0 7fdb2e25d000-7fdb2e270000 r-xp 00000000 b6:ea6e1 427 /lib/libresolv-2.11.3.so 7fdb2e270000-7fdb2e46f000 ---p 00013000 b6:ea6e1 427 /lib/libresolv-2.11.3.so 7fdb2e46f000-7fdb2e470000 r--p 00012000 b6:ea6e1 427 /lib/libresolv-2.11.3.so 7fdb2e470000-7fdb2e471000 rw-p 00013000 b6:ea6e1 427 /lib/libresolv-2.11.3.so 7fdb2e471000-7fdb2e473000 rw-p 00000000 00:00 0 7fdb2e473000-7fdb2e4a3000 r-xp 00000000 b6:ea6e1 453 /lib/libpcre.so.3.12.1Aborted
|
|
pekfos |
» 2014-01-17 15:10:53 free(): invalid pointer: 0x000000000127aae8 |
|
|
roserek Temat założony przez niniejszego użytkownika |
» 2014-01-17 15:29:03 Są jakieś konkretne przypadki kiedy tki błąd wyskakuje ? Nieważny wskaźnik wg mnie oznacza że odwółuję się do jakiegoś adresu w pamięci którego niema czy jest nieważny. Ale dlaczego dany kod działa dla 1000 iteracji i np w 1001 się wysypuje. ?? Ciężko jest znaleźć mi przyczynę |
|
pekfos |
» 2014-01-17 19:48:33 Problem leży w kodzie, którego nie podałeś. |
|
roserek Temat założony przez niniejszego użytkownika |
» 2014-01-18 11:26:47 Domyślam się że problem leży gdzieś w bibliotece rabbitmq. Generalnie program działa na dwóch wątkach. Jeden jest odpowiedzialny za indeksowanie a drugi za wczytywanie. Do tego pierwszego jest właśnie podpięty rabbit. I przechodzi przez około 100 iteracji i wyskakuje ten błąd. Poniżej zamieszczę kod, może coś mi doradzicie. int onMessage( AMQPMessage * message ) { cout << "dziala1" << endl; uint32_t j = 0; cout << "dziala2" << endl; stringstream ss; cout << "dziala3" << endl; int arg; cout << "dziala4" << endl; string order; cout << "dziala5" << endl; cout << "przed wskaznikiem" << endl; char * data = message->getMessage( & j ); cout << " po wskazniku " << endl; ss.str( "" ); if( data ) { ss << data; ss >> arg; ss >> order; cout << order << endl; panel.perform( arg, order ); } return 0; };
void * search( void * empty ) { int arg; string order, message; serwer host; while( 1 ) { host.take_data( arg, order ); message = panel.perform( arg, order ); host.answer( message ); } }
void * add( void * empty ) { try { AMQP amqp; AMQPQueue * qu2 = amqp.createQueue( "q2" ); qu2->Declare(); qu2->Bind( "e", "" ); qu2->addEvent( AMQP_MESSAGE, onMessage ); qu2->Consume( AMQP_NOACK ); } catch( AMQPException e ) { std::cout << e.getMessage() << std::endl; } }
int main( int argc, char * argv[] ) { int wynik; pthread_t thread_1, thread_2; pthread_create( & thread_1, NULL, & search,( void * ) & panel ); pthread_create( & thread_2, NULL, & add,( void * ) & panel ); pthread_join( thread_1,( void ** ) wynik ); return 0; }
Jak widać w kodzie chciałem sprawdzić dokładnie w którym miejscu pada program w sposób chyba najprostszy przez wypisywanie w każdym wierszu znaków. Dodam jeszcze log z programu: dziala1 dziala2 dziala3 dziala4 dziala5 przed wskaznikiem po wskazniku /home/pawel/temp/Julia1390033273;0;0;;q 910 Osoba zstala dodana poprawnie. Baza poprawnie zaladowana dziala1 dziala2 dziala3 dziala4 dziala5 przed wskaznikiem po wskazniku /home/pawel/temp/Kasia1390033275;0;0;;q 911 Osoba zstala dodana poprawnie. 911 dodano zdjecie Baza poprawnie zaladowana *** glibc detected *** ./deamon: free(): invalid pointer: 0x0000000001abe658 *** ======= Backtrace: =========
|
|
pekfos |
» 2014-01-18 11:40:20 panel.perform( arg, order );
|
Podaj kod tej metody / daj link do dokumentacji. |
|
roserek Temat założony przez niniejszego użytkownika |
» 2014-01-18 12:15:46 metoda perform jest napisana przeze mnie i nic szczególnego w niej nie ma: string control::perform( int arg, string order ) { switch( arg ) { case 1: save_image( order ); break; case 2: return search_person( order ); break; case 3: save_more( order ); break; case 4: save_new_person( order ); break; default: return "Bledny argument"; break; } }
Natomiast dokumentacja rabbita jest cała tutaj: http://www.rabbitmq.com/devtools.html Natomiast ja kożystam z tej konkretnej biblioteki: https://github.com/akalend/amqpcpp |
|
Monika90 |
» 2014-01-18 12:17:09 Brakuje w niej return (w tej funkcji perform oczywiście) |
|
« 1 » 2 |