Fix Serialization for MATLAB on Mac OS

Issue #16 closed
Frank Dellaert created an issue

In latest matlab, wrapped code crashes unless serialization is turned off.

Comments (10)

  1. Alex Cunningham

    What type of crash do you get? Assertion failures and segfaults typically result in slightly different messages, with assertion failures causing matlab to shut down instantly, and segfaults causing matlab to throw a "matlab needs to shut down" errors.

    Also, what matlab code are you running that crashes?

  2. Chris Beall

    Even trivial things like gtsam.Pose2() cause crash. "Matlab has encountered an internal problem and needs to close."

    MATLAB crash file:/Users/cbeall3/matlab_crash_dump.54920-1:

    ------------------------------------------------------------------------
           Segmentation violation detected at Sat May  3 11:12:25 2014
    ------------------------------------------------------------------------
    
    Configuration:
      Crash Decoding     : Disabled
      Current Visual     : None
      Default Encoding   : ISO-8859-1
      MATLAB Architecture: maci64
      MATLAB Root        : /Applications/MATLAB_R2013a.app
      MATLAB Version     : 8.1.0.604 (R2013a)
      Operating System   : Darwin 13.1.0 Darwin Kernel Version 13.1.0: Wed Apr  2 23:52:02 PDT 2014; root:xnu-2422.92.1~2/RELEASE_X86_64 x86_64
      Processor ID       : x86 Family 6 Model 42 Stepping 7, GenuineIntel
      Virtual Machine    : Java 1.6.0_65-b14-462-11M4609 with Apple Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
      Window System      : No active display
    
    Fault Count: 1
    
    
    Abnormal termination:
    Segmentation violation
    
    Register State (from fault):
      RAX = 0000000101d09000  RBX = 0000000000000028
      RCX = 0000000105c4fe70  RDX = 0000000105c4fe68
      RSP = 0000000000000028  RBP = 0000000000000000
      RSI = 00007fff8b07427c  RDI = 000000010f254b00
    
       R8 = 000000010f254b20   R9 = 00007fff9188436e
      R10 = 0000000000000000  R11 = 0000000105c4fe70
      R12 = 000000010f254b70  R13 = 000000011b7086c3
      R14 = 00007fff77a6c208  R15 = 000000010f254b90
    
      RIP = 0000000105c4fe70  RFL = 00000001226be700
    
       CS = 000000000000000a   FS = 00007fff60a700b0   GS = 00000001226be6f8
    
    Stack Trace (from fault):
    [  0] 0x0000000101dd0507 /Applications/MATLAB_R2013a.app/bin/maci64/libmwfl.dylib+00029959 _ZN2fl4diag15stacktrace_base7captureERKNS0_14thread_contextEm+00000215
    [  1] 0x0000000101dd3d42 /Applications/MATLAB_R2013a.app/bin/maci64/libmwfl.dylib+00044354 _ZN2fl4test17terminate_handledEv+00000834
    [  2] 0x0000000101dd385a /Applications/MATLAB_R2013a.app/bin/maci64/libmwfl.dylib+00043098 _ZN2fl4diag13terminate_logEPKcRKNS0_14thread_contextE+00000106
    [  3] 0x00000001025b47af /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00251823 _Z32mnRunPathDependentInitializationv+00002879
    [  4] 0x00000001025b4a21 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00252449 _Z32mnRunPathDependentInitializationv+00003505
    [  5] 0x00000001025b2f22 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00245538 mnSIGABRTHandler+00000530
    [  6] 0x00000001025b30b6 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00245942 mnFatalSignalHandler+00000086
    [  7] 0x00007fff912535aa           /usr/lib/system/libsystem_platform.dylib+00013738 _sigtramp+00000026
    [  8] 0x00007fff8b06a19a             /usr/lib/system/libsystem_malloc.dylib+00029082 szone_free_definite_size+00001992
    [  9] 0x000000011b7080ff     /opt/local/lib/libboost_serialization-mt.dylib+00016639 _ZN5boost7archive6detail20basic_serializer_map6insertEPKNS1_16basic_serializerE+00000031
    [ 10] 0x000000011b712cd2     /opt/local/lib/libboost_serialization-mt.dylib+00060626 _ZN5boost7archive6detail22archive_serializer_mapINS0_13text_iarchiveEE6insertEPKNS1_16basic_serializerE+00000114
    [ 11] 0x0000000122523988 /Users/cbeall3/gtsam_toolbox/gtsam_wrapper.mexmaci64+02603400 _ZN5boost7archive6detail19pointer_iserializerINS0_13text_iarchiveEN5gtsam9LieVectorEEC2Ev+00000168
    [ 12] 0x000000012254936f /Users/cbeall3/gtsam_toolbox/gtsam_wrapper.mexmaci64+02757487 __cxx_global_var_init1187+00000063
    [ 13] 0x00007fff60a4dc2e                                   <unknown-module>+00000000
    [ 14] 0x00007fff60a4ddba                                   <unknown-module>+00000000
    [ 15] 0x00007fff60a4aa62                                   <unknown-module>+00000000
    [ 16] 0x00007fff60a4a8f6                                   <unknown-module>+00000000
    [ 17] 0x00007fff60a40b0e                                   <unknown-module>+00000000
    [ 18] 0x00007fff60a477cf                                   <unknown-module>+00000000
    [ 19] 0x00007fff919467ee                      /usr/lib/system/libdyld.dylib+00010222 dlopen+00000059
    [ 20] 0x0000000101d17e79 /Applications/MATLAB_R2013a.app/bin/maci64/libut.dylib+00052857 utLoadLibraryWithLocalSymbolVisibility+00000025
    [ 21] 0x0000000106bed807 /Applications/MATLAB_R2013a.app/bin/maci64/libmex.dylib+00055303 _ZN13MexFileReader7loadMexEPKcS1_Pi+00000039
    [ 22] 0x0000000106beac5f /Applications/MATLAB_R2013a.app/bin/maci64/libmex.dylib+00044127 _ZN7Mlm_mex9load_fileEv+00000111
    [ 23] 0x00000001026a571b /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00296731 _ZN8Mlm_file7load_mfEv+00000171
    [ 24] 0x0000000102667c0f /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00044047 _ZN13Mlm_MATLAB_fn8try_loadEv+00000255
    [ 25] 0x0000000102661822 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00018466 _ZN13Mlm_MATLAB_fn4loadEv+00000034
    [ 26] 0x00000001026a4603 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00292355 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000051
    [ 27] 0x00000001029fd658 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+02836056 _ZN20ResolverFunctionDesc12CallFunctionEiPP11mxArray_tagiS2_+00000184
    [ 28] 0x00000001029fdf6d /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+02838381 _ZN8Resolver13CallMFunctionEiiP10_m_operandP17m_operand_storageiS1_S3_Pi+00001597
    [ 29] 0x00000001029fea5b /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+02841179 _Z22inResolveMFunctionCallP16_m_function_desciiP10_m_operandP17m_operand_storageiS2_S4_PiP13inMarshalTypeiPK19mpsTypeSequenceNlhsPFP11mxArray_tagiE+00000219
    [ 30] 0x000000010287f8eb /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+01272043 _ZN9accelImpl13MFunctionCallEPP8_accelOp+00000395
    [ 31] 0x000000010287ff92 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+01273746 _ZN9accelImpl4ExecEv+00000210
    [ 32] 0x000000010287fcee /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+01273070 _ZNK9accelCode4CallEP13inMarshalTypePi+00000094
    [ 33] 0x00000001029b1f6e /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+02527086 _ZN5inJit17ExecuteHotSegmentEP15_inJitAccelInfoP7opcodesPiPl+00003982
    [ 34] 0x00000001027e2c30 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00629808 inPcodeWalker+00000976
    [ 35] 0x00000001027e75d9 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00648665 _Z18protected_inInterp12inDebugCheckii7opcodesPV15inPcodeNest_tagPl+00000105
    [ 36] 0x00000001027e025c /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00619100 inInterPcode+00000780
    [ 37] 0x00000001027e1277 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00623223 _Z26inExecuteMFunctionOrScriptP6Mfh_mpb+00000983
    [ 38] 0x000000010285461e /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+01095198 _Z10inRunMfileiPP11mxArray_tagiS1_P6Mfh_mpP15inWorkSpace_tag+00005358
    [ 39] 0x00000001026a46d8 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00292568 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000264
    [ 40] 0x0000000106824c2b /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00465963 _Z26omCallFunctionHandleNoTrapP11mxArray_tagiPS0_iS1_P13Mfh_MATLAB_fn+00000107
    [ 41] 0x000000010687d901 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00829697 _ZNK4mcos17MScopedMethodInfo6invokeEPKNS_9COSClientERiPNS_8COSValueEiPKS5_+00000257
    [ 42] 0x000000010688c9ee /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00891374 _ZNK4mcos14MConstructorMI6invokeEPKNS_9COSClientERiPNS_8COSValueEiPKS5_+00000110
    [ 43] 0x000000010682d77f /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00501631 _ZN24OpaqueMethodCallMetaData15callConstructorEPN4mcos13COSMethodInfoEPNS0_8COSValueEPKNS0_9COSClientE+00000415
    [ 44] 0x000000010682d510 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00501008 _ZN24OpaqueMethodCallMetaData11callMMethodEPN4mcos13COSMethodInfoEPP11mxArray_tagPKNS0_9COSClientE+00000240
    [ 45] 0x00000001068309fe /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00514558 _ZN24OpaqueMethodCallMetaData23callMethodOrConstructorEP11mxArray_tagbiPS1_iPPKS0_bPKN4mcos9COSClientEPS9_PPNS6_13COSMethodInfoE+00000222
    [ 46] 0x0000000106830d91 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00515473 _ZN20OpaqueMethodMetaData23callMethodOrConstructorEP11mxArray_tagbiPS1_iPPKS0_bPKN4mcos9COSClientEPS9_PPNS6_13COSMethodInfoE+00000129
    [ 47] 0x000000010682e5ed /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00505325 _Z17omCallConstructorPN4mcos9COSClassIEPKNS_9COSClientEiPPK11mxArray_tag+00000173
    [ 48] 0x000000010682e87a /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00505978 _Z25omCallTopLevelConstructorPN4mcos9COSClassIEPKNS_9COSClientEiPPK11mxArray_tag+00000026
    [ 49] 0x00000001068307d8 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00514008 _Z27omConstructObjectWithClientN4mcos9COSNameIDEiPPK11mxArray_tagPKNS_9COSClientE+00000456
    [ 50] 0x000000010689e765 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+00964453 _Z17omConstructObjectP11mxArray_tagiPPKS_+00000053
    [ 51] 0x00000001068f8b59 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcos.dylib+01334105 _ZN22Mfh_opaque_constructor11dispatch_mfEiPP11mxArray_tagiS2_+00000329
    [ 52] 0x0000000102660148 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00012616 _ZN13Mfh_MATLAB_fn11dispatch_fhEiPP11mxArray_tagiS2_+00000168
    [ 53] 0x0000000102833acd /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00961229 _Z19inDispatchFromStackiPKcii+00001741
    [ 54] 0x00000001027e69c9 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00645577 inPcodeWalker+00016745
    [ 55] 0x00000001027e3bf6 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00633846 inPcodeWalker+00005014
    [ 56] 0x00000001027e75d9 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00648665 _Z18protected_inInterp12inDebugCheckii7opcodesPV15inPcodeNest_tagPl+00000105
    [ 57] 0x00000001027e025c /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00619100 inInterPcode+00000780
    [ 58] 0x00000001027e1277 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00623223 _Z26inExecuteMFunctionOrScriptP6Mfh_mpb+00000983
    [ 59] 0x000000010285461e /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+01095198 _Z10inRunMfileiPP11mxArray_tagiS1_P6Mfh_mpP15inWorkSpace_tag+00005358
    [ 60] 0x00000001026a46d8 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_dispatcher.dylib+00292568 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000264
    [ 61] 0x0000000102820bcb /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00883659 _Z23inEvalPcodeHeaderToWordP15_memory_contextiPP11mxArray_tagP12_pcodeheaderP6Mfh_mpj+00000187
    [ 62] 0x00000001027db696 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00599702 _Z25in_local_call_with_setjmpIN5boost3_bi6bind_tIvPFvP15_memory_contextPiPP11mxArray_tagP12_pcodeheaderjENS1_5list5INS1_5valueIS4_EENS0_3argILi1EEENSG_ILi2EEENSE_ISA_EENSE_IiEEEEEEEN6mlutil14cmddistributor17inExecutionStatusET_S5_S8_b+00000054
    [ 63] 0x00000001027d5fed /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00577517 inEvalString+00002317
    [ 64] 0x00000001027d7220 /Applications/MATLAB_R2013a.app/bin/maci64/libmwm_interpreter.dylib+00582176 _ZN12InterpBridge22EvalCmdWithLocalReturnEPKcPibb+00000144
    [ 65] 0x0000000107b15ef5 /Applications/MATLAB_R2013a.app/bin/maci64/libmwbridge.dylib+00052981 _Z28evalCommandWithLongjmpSafetyPKc+00000085
    [ 66] 0x0000000107b15fb1 /Applications/MATLAB_R2013a.app/bin/maci64/libmwbridge.dylib+00053169 _Z28evalCommandWithLongjmpSafetyRKSbItSt11char_traitsItESaItEE+00000033
    [ 67] 0x0000000107b166af /Applications/MATLAB_R2013a.app/bin/maci64/libmwbridge.dylib+00054959 _Z8mnParserv+00000943
    [ 68] 0x00000001025a0872 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00170098 _ZN11mcrInstance30mnParser_on_interpreter_threadEv+00000034
    [ 69] 0x000000010257f2eb /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00033515 _ZN3mcr7runtime17InterpreterThread4Impl17InvocationRequest3runEv+00000075
    [ 70] 0x000000010257f32f /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00033583 _ZN3mcr7runtime17InterpreterThread4Impl26invocation_request_handlerEl+00000031
    [ 71] 0x00000001020e027d /Applications/MATLAB_R2013a.app/bin/maci64/libmwservices.dylib+00086653 _ZN10eventqueue18UserEventQueueImpl5flushEv+00001133
    [ 72] 0x0000000109281675 /Applications/MATLAB_R2013a.app/bin/maci64/libmwuix.dylib+00149109 _Z25isHandleUserEventCallbackPFvPvE+00000565
    [ 73] 0x000000010216c82e /Applications/MATLAB_R2013a.app/bin/maci64/libmwservices.dylib+00661550 _Z25svWS_ProcessPendingEventsv+00010030
    [ 74] 0x0000000102168a60 /Applications/MATLAB_R2013a.app/bin/maci64/libmwservices.dylib+00645728 _Z25svWS_ProcessPendingEventsiib+00001088
    [ 75] 0x000000010257f52f /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00034095 _ZN3mcr7runtime17InterpreterThread4Impl14process_eventsERKN5boost10shared_ptrIS2_EE+00000111
    [ 76] 0x000000010257f81e /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00034846 _ZN3mcr7runtime17InterpreterThread4Impl3runERKN5boost10shared_ptrIS2_EEPNS2_12init_contextE+00000334
    [ 77] 0x000000010257a348 /Applications/MATLAB_R2013a.app/bin/maci64/libmwmcr.dylib+00013128 _Z26run_init_and_handle_eventsPv+00000056
    [ 78] 0x00007fff8d6c8899            /usr/lib/system/libsystem_pthread.dylib+00006297 _pthread_body+00000138
    [ 79] 0x00007fff8d6c872a            /usr/lib/system/libsystem_pthread.dylib+00005930 _pthread_struct_init+00000000
    [ 80] 0x00007fff8d6ccfc9            /usr/lib/system/libsystem_pthread.dylib+00024521 thread_start+00000013
    
  3. Chris Beall

    Here's a more verbose backtrace. The serialization library instantiates a whole bunch of singletons for serializable objects, and for some reason this seems to fail for LieVector, if I'm reading this correctly. So far, no clue why. Maybe someone else has a hunch.

    >> gtsam.Point2(1.0,2.0)      
    Process 29299 stopped
    * thread #6: tid = 0x1fcc54, 0x000000011a08c6eb libboost_serialization-mt.dylib`std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 219, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
        frame #0: 0x000000011a08c6eb libboost_serialization-mt.dylib`std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 219
    libboost_serialization-mt.dylib`std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 219:
    -> 0x11a08c6eb:  movq   (%rax), %rax
       0x11a08c6ee:  testq  %rax, %rax
       0x11a08c6f1:  movq   %r12, %rsi
       0x11a08c6f4:  je     0x11a08c6fc               ; std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 236
    (lldb) bt
    * thread #6: tid = 0x1fcc54, 0x000000011a08c6eb libboost_serialization-mt.dylib`std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 219, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
      * frame #0: 0x000000011a08c6eb libboost_serialization-mt.dylib`std::__1::__tree<boost::archive::detail::basic_serializer const*, boost::archive::detail::basic_serializer_map::type_info_pointer_compare, std::__1::allocator<boost::archive::detail::basic_serializer const*> >::__insert_unique(boost::archive::detail::basic_serializer const* const&) + 219
        frame #1: 0x000000011a08c0ff libboost_serialization-mt.dylib`boost::archive::detail::basic_serializer_map::insert(boost::archive::detail::basic_serializer const*) + 31
        frame #2: 0x000000011a098292 libboost_serialization-mt.dylib`boost::archive::detail::archive_serializer_map<boost::archive::text_oarchive>::insert(boost::archive::detail::basic_serializer const*) + 114
        frame #3: 0x000000011743e00a gtsam_wrapper.mexmaci64`pointer_oserializer(this=0x00000001176fcb00) + 106 at oserializer.hpp:217
        frame #4: 0x000000011743df7f gtsam_wrapper.mexmaci64`singleton_wrapper(this=0x00000001176fcb00) + 31 at singleton.hpp:106
        frame #5: 0x000000011743dd85 gtsam_wrapper.mexmaci64`singleton_wrapper(this=0x00000001176fcb00) + 21 at singleton.hpp:106
        frame #6: 0x0000000116feffeb gtsam_wrapper.mexmaci64`boost::serialization::singleton<boost::archive::detail::pointer_oserializer<boost::archive::text_oarchive, gtsam::LieVector> >::get_instance() + 59 at singleton.hpp:128
        frame #7: 0x0000000116f911d9 gtsam_wrapper.mexmaci64`__cxx_global_var_init1191 + 25 at singleton.hpp:149
        frame #8: 0x00007fff5fc11c2e
    
  4. Alex Cunningham

    For an overview, look here.

    Basically, there's a static instance of some object that gets initialized somewhere (likely on first call to a serialization function), which might complicate linking.

  5. Log in to comment