« MBS FileMaker Plugin,… | Home | Xojo License guide »

Please don't deactivate plugins

Today we had once again had a FileMaker developer complaining about more or less random crashes in FileMaker since yesterday. The problem went away once we moved a deactivated plugin out of the Extensions folder.

If you deactivate any plugin on Mac, this can result in crashes in FileMaker. Especially in low level cocoa runtime methods.

e.g. in method_setImplementation or in +[ initialize].

The cocoa class accessed is in the deactivate plugin. FileMaker loaded the plugin, the class was registered, the plugin unloaded. The class registration entry in the global data structures now points to memory which has been freed when the plugin was unloaded.
So please never deactivate plugins on Mac. Remove them from the extension folder if necessary.

The crash report looks like this:

Application Specific Information:
abort() called
*** error for object 0x10e54535b: pointer being freed was not allocated

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8d3cef06 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff94b154ec pthread_kill + 90
2 libsystem_c.dylib 0x00007fff94ca06e7 abort + 129
3 libsystem_malloc.dylib 0x00007fff8eeff041 free + 425
4 libobjc.A.dylib 0x00007fff96617bf0 cache_collect + 181
5 libobjc.A.dylib 0x00007fff96618f02 flushCaches(objc_class*) + 474
6 libobjc.A.dylib 0x00007fff9661cde9 _method_setImplementation(objc_class*, method_t*, void (*)()) + 45
7 libobjc.A.dylib 0x00007fff9661cd8e method_setImplementation + 38
8 com.apple.WebKitLegacy 0x00007fff8a39c09c +[WebHTMLViewPrivate initialize] + 92
9 libobjc.A.dylib 0x00007fff966163c8 _class_initialize + 711
10 libobjc.A.dylib 0x00007fff96615d08 lookUpImpOrForward + 179
11 libobjc.A.dylib 0x00007fff96610591 objc_msgSend + 209
12 com.apple.WebKitLegacy 0x00007fff8a39bfd9 -[WebHTMLView initWithFrame:] + 153
13 com.apple.AppKit 0x00007fff91cede4f -[NSView init] + 62
14 com.apple.WebKitLegacy 0x00007fff8a39bed4 -[WebFrameView(WebInternal) _makeDocumentViewForDataSource:] + 148

So FileMaker initialized a Webviewer for the current layout. This caused WebHTMLViewPrivate initialize to run. That changes some methods in some cocoa classes. Some old method is freed from memory and now it detects that this is a memoryblock, which was not allocated. The reason probably is that the memoryblock has been freed earlier when the plugin was unloaded. Claris FileMaker Plugin
03 06 16 - 20:43