Search code examples
macoswebkitosx-snow-leopardnpapi

WebKitPluginHost silently quits my 32 bit plugin on OS X 10.6


I have a custom OS X NPAPI plugin built as universal 32 bit bundle. It works fine under OS x 10.6 in Firefox. It also runs fine in Safari launched in 32 bit mode.

However, it silently fails in Safari launched in 64 bit mode. The 64 bit Safari runs 32 bit plugins in a separate process (WebKitPluginHost). Plugin log shows that the host starts the plugin, calls NP_Initialize, then NP_GetEntryPoints, then NPP_New, which successfully returns created instance. Typically, the next plugin method called would be NPP_SetWindow, however, host never calls it. Instead it silently quits in about 10 seconds after launch, with no messages or whatever. I managed to attach to the host process with GDB, but with no luck, it just notes that the process has finished normally.

I'd much appreciate any hint what I might have done wrong in the plugin, or a URL of open sourced NPAPI plugin which is known to work under WebKitPluginHost, or even a hint what would be the best way to debug this issue (building debug version of WebKit is a last resort, I've been there and now I need to find a solution a bit more quicker)


Solution

  • It appeared that WebKitPluginHost explicitly requires plugin to set NPPVpluginDrawingModel. Since the plugin was windowless I never bothered to do that, and it worked out fine.

    Minus six hours of my life for digging that out :(