Segmentation fault calling compiled shared library Initialize routine

조회 수: 9 (최근 30일)
Mark Almquist
Mark Almquist 2023년 7월 23일
답변: Mark Almquist 2023년 8월 7일
I have a compiled C++ Matlab shared library (libXXXLibrary.so) that I've been testing. When I used mbuild to build a driver app for testing the library's functionality, everything works. I then created an external "toy" .cpp driver, which sucessfully builds and links.
When I compile the app for release, everything works fine. But if I build for debug, I get a segmentation fault when the Matlab compiler generated libXXXLibraryInitialize() is called. If I attempt to bypass this by calling mclmcrInitialize() directly, I get a crash dump.
Any suggestions on how to approach this problem?

답변 (2개)

Pratyush
Pratyush 2023년 7월 26일
편집: Pratyush 2023년 7월 26일
Hi Mark,
I understand that you face the issue when the gdb is attached while running the C++ application. The problem occurs in debug mode and not in release mode when directly using mbuild workflow in the MATLAB environment.
The cause of this problem may be incompatibility between JRE of MATLAB and the gdb (gcc debugger).
The segmentation fault might be occuring due to this incompatibility.
The workaround is to disable the Java RTE from MATLAB in the C++ application by specifying the options array as explained in the following post: How do I use the mclInitializeApplication function to make a C-shared library that does not use the JVM or JIT in MATLAB 7.0 ... - MATLAB Answers - MATLAB Central (mathworks.com)

Mark Almquist
Mark Almquist 2023년 8월 7일
The answer to use "-nojvm","-nojit" works fine if the C++ function calls I make into the compiled C++ Matlab shared library (both debug and release builds) do not involve generating figures. If the called Matlab function generates graphics/figures, the application crashes.
mark a.

카테고리

Help CenterFile Exchange에서 C Shared Library Integration에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by