matlab crashes when simulink model runs for the second time

조회 수: 6 (최근 30일)
ke feng
ke feng 2024년 4월 15일
답변: Andreas Goser 2024년 4월 16일
I run a Simulnik model which contains a s-function, this s-function is implemented in c++ and contains some global variables.
The model runs fine at first, when I stop the model and run it again Matlab crashes unless I use "clear mex".
I guess it may be a memory management problem in the C++ code.
In addition, the mex file corresponding to the s-function also references a dll file.
A part of stack trace is as follows:
Stack Trace (from fault):
[ 0] 0x00007fff61b0eb09 E:\OpenDDS-3.26.1\ACE_wrappers\lib\ACEd.dll+02681609 ACE_Configuration_Win32Registry::enumerate_values+01529406
[ 1] 0x00007ffec567d579 E:\OpenDDS-3.26.1\lib\OpenDDS_Dcpsd.dll+12047737 OpenDDS::DCPS::getMetaStruct<DDS::PublicationMatchedStatus>+04362850
[ 2] 0x00007ffec55d9a75 E:\OpenDDS-3.26.1\lib\OpenDDS_Dcpsd.dll+11377269 OpenDDS::DCPS::getMetaStruct<DDS::PublicationMatchedStatus>+03692382
[ 3] 0x00007fff463c0847 D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+03475527 OpenDDS::DCPS::DataReaderImpl_T<bustwo::inputs>::purge_data+00000103
[ 4] 0x00007fff462b29c3 D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+02369987 OpenDDS::DCPS::DataReaderImpl_T<bustwo::inputs>::~DataReaderImpl_T<bustwo::inputs>+00001347
[ 5] 0x00007fff462f77e8 D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+02652136 OpenDDS::DCPS::DataReaderImpl_T<bustwo::inputs>::`vbase destructor'+00000040
[ 6] 0x00007fff462fe80c D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+02680844 OpenDDS::DCPS::DataReaderImpl_T<bustwo::inputs>::`scalar deleting destructor'+00000044
[ 7] 0x00007ffec53204e4 E:\OpenDDS-3.26.1\lib\OpenDDS_Dcpsd.dll+08520932 OpenDDS::DCPS::getMetaStruct<DDS::PublicationMatchedStatus>+00836045
[ 8] 0x00007fff4634b473 D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+02995315 OpenDDS::DCPS::LocalObjectBase::_remove_ref+00000067
[ 9] 0x00007fff49643fc3 E:\OpenDDS-3.26.1\ACE_wrappers\lib\TAOd.dll+02047939 TAO::unbounded_basic_string_sequence<char>::release+01091232
[ 10] 0x00007fff461d8e4d D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+01478221 CORBA::release<bustwo::inputsDataReader *>+00000077
[ 11] 0x00007fff461e386b D:\onedrive\AVIC\bus2bus\BusoneDDS_Idld.dll+01521771 TAO::Objref_Traits<bustwo::inputsDataReader>::release+00000043
[ 12] 0x00007ff81be05c86 D:\onedrive\AVIC\bus2bus\busoneDDS.mexw64+00023686 mexFunction+00010310
[ 13] 0x00007ff81be033b2 D:\onedrive\AVIC\bus2bus\busoneDDS.mexw64+00013234

답변 (1개)

Andreas Goser
Andreas Goser 2024년 4월 16일
I have seen issues like this in a situation where the C/C++ code overwrites sections of memory and causes the crash. It certainly is not easy to debug. Many MATLAB/Simulink users are not at the same time strong in C/C++ and thus need help from colleagues with debugging. Especially if the C/C++ code comes from a third party.

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by