On Wed, Jun 16, 2010 at 8:49 PM, Tinny <[email protected]> wrote: > My GWT application which has been running happily now for a year is > now broken. The symptom: Safari 5 reports that it has quit > unexpectedly while using the Aspera Web plugin (a third-party plugin > that my app uses for allowing file uploads and downloads). This issue > is 100% repeatable. > > GWT version is 2.0.3. IE, Firefox, and Safari 4 have been and are > still operating correctly with my GWT application. > > I have determined that the cause of this Safari 5 crash is the > interaction with the Aspera plugin within an AsyncCallback. For > example, there is a native method defined: > > private static native void uploadToURL(final String sourcePath, > final String destinationURL) > /*-{ > $doc.getElementById('aspera-web').startUploadToURL(sourcePath, > destinationURL); > }-*/; > > ...which fetches the 'aspera-web' plugin Object defined in the html > file. It then calls a method on that plugin, passing in a couple of > Strings. > > Now, if this native method is called within an AsyncCallback, Safari 5 > will crash. For example: > > greetingService.greetServer(textToServer, new > AsyncCallback<String>() { > �...@override > public void onFailure(final Throwable caught) { > // ... deal with failure > } > > �...@override > public void onSuccess(final String result) { > uploadToURL("DummyFile", "fasp://aspera...@dummyserver/ > Test?v=2&auth=yes"); > } > }); > > The uploadToURL call will trigger Safari 5 to crash. The parameters > are unimportant at this point - they can be empty Strings if you like. > > Now, if the uploadToURL call is made anywhere outside of an > AsyncCallback, the call then succeeds on Safari 5. The crash is only > experienced when uploadToURL is called as part of the callback. So, > for example, if you create a GWT Button, and for the click event call > uploadToURL, the call will succeed. > > Interestingly, other interactions with the plugin in Safari 5 work. > For instance, another native method: > > private static native String queryVersion() > /*-{ > return $doc.getElementById('aspera-web').queryVersion(); > }-*/; > > ... will query the version of the installed Aspera Connect plugin. > This queryVersion() method may be called anywhere in the code, > including an AsyncCallback handler, and will succeed. The > significance here may be that this call passes no parameters to the > plugin. > > I have posted a zipp'd Eclipse project that just modifies the basic > 'greetingService' to show this example in action. Download link: > http://rapidshare.com/files/399840688/Aspera-test_eclipse_project.zip.html > > So the question is: What's happened in Safari 5? Here is a relevant > extract from the Apple Problem Report for Safari 5: > > Process: Safari [3952] > Path: /Applications/Safari.app/Contents/MacOS/Safari > Identifier: com.apple.Safari > Version: 5.0 (6533.16) > Build Info: WebBrowser-75331600~5 > Code Type: X86-64 (Native) > Parent Process: launchd [98] > > PlugIn Path: /Library/Internet Plug-Ins/Aspera Web.webplugin/ > Contents/MacOS/Aspera Web > PlugIn Identifier: com.asperasoft.AsperaWeb > PlugIn Version: ??? (1.1) > > Date/Time: 2010-06-17 10:32:54.613 +1000 > OS Version: Mac OS X 10.6.4 (10F569) > Report Version: 6 > > Exception Type: EXC_CRASH (SIGABRT) > Exception Codes: 0x0000000000000000, 0x0000000000000000 > Crashed Thread: 0 Dispatch queue: com.apple.main-thread > > Application Specific Information: > abort() called > > Thread 0 Crashed: Dispatch queue: com.apple.main-thread > 0 libSystem.B.dylib 0x00007fff81ed43d6 __kill + 10 > 1 libSystem.B.dylib 0x00007fff81f74972 abort + 83 > 2 libstdc++.6.dylib 0x00007fff814325d2 __tcf_0 + 0 > 3 libobjc.A.dylib 0x00007fff86f45d3d _objc_terminate > + 120 > 4 libstdc++.6.dylib 0x00007fff81430ae1 > __cxxabiv1::__terminate(void (*)()) + 11 > 5 libstdc++.6.dylib 0x00007fff81430b16 > __cxxabiv1::__unexpected(void (*)()) + 0 > 6 libstdc++.6.dylib 0x00007fff81430bfc > __gxx_exception_cleanup(_Unwind_Reason_Code, _Unwind_Exception*) + 0 > 7 libstdc++.6.dylib 0x00007fff813ecad4 > std::__throw_logic_error(char const*) + 127 > 8 libstdc++.6.dylib 0x00007fff8141816d char* > std::string::_S_construct<char const*>(char const*, char const*, > std::allocator<char> const&, std::forward_iterator_tag) + 53 > 9 libstdc++.6.dylib 0x00007fff8141855f > std::basic_string<char, std::char_traits<char>, std::allocator<char> >>::basic_string(char const*, std::allocator<char> const&) + 67 > 10 com.asperasoft.AsperaWeb 0x000000011be3b2a3 -[AWPlugInView > startUpload:toURL:] + 103 > 11 com.apple.CoreFoundation 0x00007fff80a4ad2c __invoking___ + > 140 > 12 com.apple.CoreFoundation 0x00007fff80a4abfd -[NSInvocation > invoke] + 141 > 13 com.apple.WebCore 0x00007fff84879ef3 > JSC::Bindings::ObjcInstance::invokeObjcMethod(JSC::ExecState*, > JSC::Bindings::ObjcMethod*, JSC::ArgList const&) + 787 > > > Appreciate any assistance with this.
This really looks and sounds like a bug in the third party plugin --not GWT. I would file an issue with them. -- Chris Conroy Software Engineer Google, Atlanta -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
