2012-11-28 75 views
0

我已經構建了基於boost :: asio的應用程序。有時我得到了這種核心轉儲(不是regullary)。我試圖調查發生了什麼,但我沒有更多的想法來解決它。 在我看來,我認爲這可能是io服務對象內的一些問題 - 我的意思是可能有任何錯誤?我應該更新它嗎? 任何人都可以解釋在這種情況下memcpy()會做什麼?核心的原因是什麼?Boost asio io service memcpy()

更多詳情: 平臺。 SunOS中。 升壓 - 1.49

/app/bin/executor_3'executor_dumpstack+0x13 [0x426645] 
/app/bin/executor_3'signal_dumpstack+0x9d [0x426625] 
/lib/amd64/libc.so.1'__sighndlr+0x6 [0xfffffd7fff224ea6] 
/lib/amd64/libc.so.1'call_user_handler+0x2a4 [0xfffffd7fff217b5c] 
/lib/amd64/libc.so.1'memcpy+0x1929 [0xfffffd7fff18a449] [Signal 11 (SEGV)] 
/opt/lib/extralibs/exe_io.so'_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmE4callINS_10shared_ptrIS2_EES5_mEEvRT_PKvRT0_RT1_+0x8b [0xfffffd7ff64ff869] 
/opt/lib/extralibs/exe_io.so'_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEclINS_10shared_ptrIS2_EEEEvRT_S6_m+0x3c [0xfffffd7ff64fe47e] 
/opt/lib/extralibs/exe_io.so'_ZN5boost3_bi5list3INS0_5valueINS_10shared_ptrI3GETEEEEPFNS_3argILi1EEEvEPFNS7_ILi2EEEvEEclINS_4_mfi3mf2IvS4_RKNS_6system10error_codeEmEENS0_5list2ISL_RKmEEEEvNS0_4typeIvEERT_RT0_i+0x72 [0xfffffd7ff64fce58] 
/opt/lib/extralibs/exe_io.so'_ZN5boost3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENS0_5list3INS0_5valueINS_10shared_ptrIS4_EEEEPFNS_3argILi1EEEvEPFNSF_ILi2EEEvEEEEclIS6_mEEvRKT_RKT0_+0x43 [0xfffffd7ff64fbfa7] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS5_EEEESaIcENS1_18transfer_exactly_tENS_3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENSB_5list3INSB_5valueINS_10shared_ptrISF_EEEEPFNS_3argILi1EEEvEPFNSQ_ILi2EEEvEEEEEEclESJ_mi+0x16f [0xfffffd7ff64fa31b] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail7binder2INS1_17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS6_EEEESaIcENS1_18transfer_exactly_tENS_3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENSC_5list3INSC_5valueINS_10shared_ptrISG_EEEEPFNS_3argILi1EEEvEPFNSR_ILi2EEEvEEEEEEESI_mEclEv+0x2d [0xfffffd7ff6503345] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio19asio_handler_invokeINS0_6detail7binder2INS2_17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEESaIcENS2_18transfer_exactly_tENS_3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENSD_5list3INSD_5valueINS_10shared_ptrISH_EEEEPFNS_3argILi1EEEvEPFNSS_ILi2EEEvEEEEEEESJ_mEEEEvT_z+0x8e [0xfffffd7ff6502d76] 
/opt/lib/extralibs/exe_io.so'_ZN33boost_asio_handler_invoke_helpers6invokeIN5boost4asio6detail7binder2INS3_17read_streambuf_opINS2_19basic_stream_socketINS2_2ip3tcpENS2_21stream_socket_serviceIS8_EEEESaIcENS3_18transfer_exactly_tENS1_3_bi6bind_tIvNS1_4_mfi3mf2Iv3GETRKNS1_6system10error_codeEmEENSE_5list3INSE_5valueINS1_10shared_ptrISI_EEEEPFNS1_3argILi1EEEvEPFNST_ILi2EEEvEEEEEEESK_mEES11_EEvRT_RT0_+0x3e [0xfffffd7ff650250a] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail19asio_handler_invokeINS1_7binder2INS1_17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEESaIcENS1_18transfer_exactly_tENS_3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENSD_5list3INSD_5valueINS_10shared_ptrISH_EEEEPFNS_3argILi1EEEvEPFNSS_ILi2EEEvEEEEEEESJ_mEESA_SB_SC_S10_EEvRT_PNS4_IT0_T1_T2_T3_EE+0x21 [0xfffffd7ff6501f61] 
/opt/lib/extralibs/exe_io.so'_ZN33boost_asio_handler_invoke_helpers6invokeIN5boost4asio6detail7binder2INS3_17read_streambuf_opINS2_19basic_stream_socketINS2_2ip3tcpENS2_21stream_socket_serviceIS8_EEEESaIcENS3_18transfer_exactly_tENS1_3_bi6bind_tIvNS1_4_mfi3mf2Iv3GETRKNS1_6system10error_codeEmEENSE_5list3INSE_5valueINS1_10shared_ptrISI_EEEEPFNS1_3argILi1EEEvEPFNST_ILi2EEEvEEEEEEESK_mEES12_EEvRT_RT0_+0x25 [0xfffffd7ff65019a3] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail23reactive_socket_recv_opINS0_17mutable_buffers_1ENS1_17read_streambuf_opINS0_19basic_stream_socketINS0_2ip3tcpENS0_21stream_socket_serviceIS7_EEEESaIcENS1_18transfer_exactly_tENS_3_bi6bind_tIvNS_4_mfi3mf2Iv3GETRKNS_6system10error_codeEmEENSD_5list3INSD_5valueINS_10shared_ptrISH_EEEEPFNS_3argILi1EEEvEPFNSS_ILi2EEEvEEEEEEEE11do_completeEPNS1_15task_io_serviceEPNS1_25task_io_service_operationESL_m+0xc4 [0xfffffd7ff65007cc] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail25task_io_service_operation8completeERNS1_15task_io_serviceERKNS_6system10error_codeEm+0x32 [0xfffffd7ff6433dc8] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail15task_io_service10do_run_oneERNS1_11scoped_lockINS1_11posix_mutexEEERNS2_11thread_infoERNS1_8op_queueINS1_25task_io_service_operationEEERKNS_6system10error_codeE+0x202 [0xfffffd7ff6433c9e] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio6detail15task_io_service3runERNS_6system10error_codeE+0xff [0xfffffd7ff6433925] 
/opt/lib/extralibs/exe_io.so'_ZN5boost4asio10io_service3runEv+0x26 [0xfffffd7ff64335d6] 
/opt/lib/extralibs/exe_io.so'_ZN6ZohaIO9RunIOEv+0x19 [0xfffffd7ff64335ad] 
/opt/lib/extralibs/exe_io.so'_ZNK5boost4_mfi3mf0Iv6ZohaIOEclEPS2_+0x64 [0xfffffd7ff6440cee] 
/opt/lib/extralibs/exe_io.so'_ZN5boost3_bi5list1INS0_5valueIP6ZohaIOEEEclINS_4_mfi3mf0IvS3_EENS0_5list0EEEvNS0_4typeIvEERT_RT0_i+0x41 [0xfffffd7ff6440c4d] 
/opt/lib/extralibs/exe_io.so'_ZN5boost3_bi6bind_tIvNS_4_mfi3mf0Iv6ZohaIOEENS0_5list1INS0_5valueIPS4_EEEEEclEv+0x33 [0xfffffd7ff6440bfb] 
/opt/lib/extralibs/exe_io.so'_ZN5boost6detail11thread_dataINS_3_bi6bind_tIvNS_4_mfi3mf0Iv6ZohaIOEENS2_5list1INS2_5valueIPS6_EEEEEEE3runEv+0x1c [0xfffffd7ff6440514] 
/opt/csw/gxx/lib/amd64/libboost_thread.so.1.49.0'0xf655 [0xfffffd7ffa97f655] 
/lib/amd64/libc.so.1'_thrp_setup+0xbc [0xfffffd7fff224b14] 
/lib/amd64/libc.so.1'_lwp_start+0x0 [0xfffffd7fff224de0] 

objdump的輸出。

0000000000000000 <_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmE4callINS_10shared_ptrIS2_EES5_mEEvRT_PKvRT0_RT1_>: 
    template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const 
    { 
     BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); 
    } 

    template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const 
    0: 55      push %rbp 
    1: 48 89 e5    mov %rsp,%rbp 
    4: 53      push %rbx 
    5: 48 83 ec 38    sub $0x38,%rsp 
    9: 48 89 7d e8    mov %rdi,-0x18(%rbp) 
    d: 48 89 75 e0    mov %rsi,-0x20(%rbp) 
    11: 48 89 55 d8    mov %rdx,-0x28(%rbp) 
    15: 48 89 4d d0    mov %rcx,-0x30(%rbp) 
    19: 4c 89 45 c8    mov %r8,-0x38(%rbp) 
    { 
     BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); 
    1d: 48 8b 45 e0    mov -0x20(%rbp),%rax 
    21: 48 89 c7    mov %rax,%rdi 
    24: e8 00 00 00 00   callq 29 <_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmE4callINS_10shared_ptrIS2_EES5_mEEvRT_PKvRT0_RT1_+0x29> 
    29: 48 89 c2    mov %rax,%rdx 
    2c: 48 8b 45 e8    mov -0x18(%rbp),%rax 
    30: 48 8b 00    mov (%rax),%rax 
    33: 83 e0 01    and $0x1,%eax 
    36: 84 c0     test %al,%al 
    38: 74 23     je  5d <_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmE4callINS_10shared_ptrIS2_EES5_mEEvRT_PKvRT0_RT1_+0x5d> 
    3a: 48 8b 45 e8    mov -0x18(%rbp),%rax 
    3e: 48 8b 40 08    mov 0x8(%rax),%rax 
    42: 48 8d 04 02    lea (%rdx,%rax,1),%rax 
    46: 48 8b 08    mov (%rax),%rcx 
    49: 48 8b 45 e8    mov -0x18(%rbp),%rax 
    4d: 48 8b 00    mov (%rax),%rax 
    50: 48 83 e8 01    sub $0x1,%rax 
    54: 48 8d 04 01    lea (%rcx,%rax,1),%rax 
    58: 48 8b 00    mov (%rax),%rax 
    5b: eb 07     jmp 64 <_ZNK5boost4_mfi3mf2Iv3GETRKNS_6system10error_codeEmE4callINS_10shared_ptrIS2_EES5_mEEvRT_PKvRT0_RT1_+0x64> 
    5d: 48 8b 45 e8    mov -0x18(%rbp),%rax 
    61: 48 8b 00    mov (%rax),%rax 
    64: 48 8b 4d c8    mov -0x38(%rbp),%rcx 
    68: 48 8b 19    mov (%rcx),%rbx 
    6b: 48 8b 4d e8    mov -0x18(%rbp),%rcx 
    6f: 48 8b 49 08    mov 0x8(%rcx),%rcx 
    73: 48 8d 3c 0a    lea (%rdx,%rcx,1),%rdi 
    77: 48 8b 4d d0    mov -0x30(%rbp),%rcx 
    7b: 48 89 da    mov %rbx,%rdx 
    7e: 48 89 ce    mov %rcx,%rsi 
+0

作爲@PSIAlt提到的,崩潰是在你的完成處理程序中:'bind'試圖調用已經銷燬的對象的成員函數。建議:堅持使用'shared_from_this'成語,不要將完成處理程序綁定到raw'this'指針。 –

回答

2

提示:使用C++ filt的實用程序,以便您的回溯將成爲可讀:cat backtrace | c++filt

事情發生async_read上GET調用處理程序。也許這個對象在調用時被銷燬,或者一些參數混亂。不用代碼就可以準確無誤地說,但是有回調的東西可以從這個回溯中看到。

+0

謝謝你的回答對我來說非常有用!問候! – pasikonik99

+1

@ pasikonik99也許接受呢? – PSIAlt