Looking at PluginRequestProcessor::sendMember in icedtea-web-1.1.4/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc, I see the comment:
* This is a static function, called in another thread. Since certain data
* can only be requested from the main thread in Mozilla, this function
* does whatever it can seperately, and then makes an internal request that
* causes _sendMember to do the rest of the work.
so perhaps the fix is to just move the get*identifier calls to the part that gets executed on the main thread.
Does anyone know who to contact about getting this fixed on the IcedTea side? Thus far, IcedTea seems to be the only plugin/addon hitting this and only for some applets (I tested quite a few before landing), so I do not want to back out the whole single-threaded check for this one case.
This abort is caused by using a JSRuntime (via _getstringident ifier) from off the main thread and was added by bug 650411. Incidentally, it looks like this was already an error (see the NS_IsMainThread check in http:// mxr.mozilla. org/mozilla- central/ source/ dom/plugins/ base/nsNPAPIPlu gin.cpp# 1407), it just wasn't causing failures. With JSRuntime being made single-threaded (announced a few months ago: http:// groups. google. com/group/ mozilla. dev.tech. js-engine/ msg/ae5f22f39e4 fd150), this will definitely cause unsafe race-conditions.
The callstack for the crash is:
#3 JS_AbortIfWrong Thread ck::GetSafeJSCo ntext :GetSafeJSConte xt :plugins: :parent: :_getstringiden tifier ocessor: :sendMember jvm/java- 6-openjdk/ jre/lib/ amd64/IcedTeaPl ugin.so jvm/java- 6-openjdk/ jre/lib/ amd64/IcedTeaPl ugin.so
#4 js_NewContext
#5 JS_NewContext
#6 XPCJSContextSta
#7 nsXPConnect:
#8 mozilla:
#9 PluginRequestPr
from /usr/lib/
#10 queue_processor
from /usr/lib/
#11 start_thread
Looking at PluginRequestPr ocessor: :sendMember in icedtea- web-1.1. 4/plugin/ icedteanp/ IcedTeaPluginRe questProcessor. cc, I see the comment:
* This is a static function, called in another thread. Since certain data
* can only be requested from the main thread in Mozilla, this function
* does whatever it can seperately, and then makes an internal request that
* causes _sendMember to do the rest of the work.
so perhaps the fix is to just move the get*identifier calls to the part that gets executed on the main thread.
Does anyone know who to contact about getting this fixed on the IcedTea side? Thus far, IcedTea seems to be the only plugin/addon hitting this and only for some applets (I tested quite a few before landing), so I do not want to back out the whole single-threaded check for this one case.