Несколько недель назад у меня была неприятная проблема с использованием динамической библиотеки с LabView. Проблема возникла, когда LabView попытался загрузить динамическую библиотеку, написанную на C ++. Выдержка ошибки сегментации, с которой я столкнулся, была:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000
VM Regions Near 0:
--> __PAGEZERO 0000000000000000-0000000000001000 [ 4K] ---/--- SM=NUL /Applications/National Instruments/*/LabVIEW.app/Contents/MacOS/LabVIEW
__TEXT 0000000000001000-0000000002fe3000 [ 47.9M] r-x/rwx SM=COW /Applications/National Instruments/*/LabVIEW.app/Contents/MacOS/LabVIEW
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_platform.dylib 0x99bf83e7 _platform_memmove$VARIANT$sse42 + 215
1 libsystem_c.dylib 0x939e5cc2 fgets + 227
2 com.ni.labview 0x01962d6c ReadExternalLibExports(unsigned char const*, CPStr***, _LStrArray***) + 812
3 com.ni.labview 0x003c9df0 UpdateFuncList(ObjectHeap*, long, LIBFUNCDATA**, long) + 400
4 com.ni.labview 0x003ca1a0 SetupLibFuncDlg(ObjectHeap*, BasicObject*, unsigned long*, LIBFUNCDATA**, long, long*) + 592
5 com.ni.labview 0x003c1195 LoadLibDialog(ObjectHeap*, BasicObject*, long, long*) + 85
... and much more stack information.
Я пытался сузить эту проблему в течение нескольких дней, но не повезло. Где-то я читал, что _platform_memmove...
был связан с 32/64-битными проблемами, которые казались мне возможными, так как я работаю в 64-битной системе (Mac OSX mavericks).
К моему удивлению, на этой неделе я сделал обновление Xcode, которое решило проблему. Но нет ничего хуже, чем невидимый враг, а не побежденный. Другими словами, я до сих пор не знаю, что послужило причиной этой ошибки сегментации и почему она исчезла.
Мой вопрос: что было исправлено (я полагаю в LLVM-3.4), что будет связано с такого рода ошибками? Примечания к выпуску не дают достаточно подробностей, чтобы я, конечно, сам мог ответить на этот вопрос.
Задача ещё не решена.
Других решений пока нет …