Closed Bug 1187406 Opened 11 years ago Closed 11 years ago

LastPass' Secure Notes File Upload crashes Firefox

Categories

(Core :: Widget: Gtk, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED FIXED
Tracking Status
firefox42 --- affected

People

(Reporter: johnp, Unassigned)

References

Details

Using LastPass' Secure Notes File-Upload Firefox crashes without Crash-Reporter on Fedora 22. This happens with the latest development build of LastPass. I didn't check other file-upload instances, but this bug may also be a more general one, judging from the console output: > ./firefox -g -d gdb (firefox:29241): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (firefox:29241): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. console.error: [CustomizableUI] Custom widget with id loop-button does not return a valid node ATTENTION: default value of option force_s3tc_enable overridden by environment. Can't find symbol 'glXCreateContextAttribsARB'. console.error: [CustomizableUI] Custom widget with id loop-button does not return a valid node Shumway is registered (plugin-container:29322): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29322): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29314): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29314): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29313): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29313): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29323): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29319): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29323): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29304): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29304): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29319): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29307): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29307): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29309): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version. (plugin-container:29309): GLib-GObject-WARNING **: The property GtkSettings:gtk-button-images is deprecated and shouldn't be used anymore. It will be removed in a future version. console.error: self-destructing-cookies: localstorage: Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIIOService.newURI] (firefox:29241): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported [Child 29304] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29304] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29309] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29309] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29307] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29307] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29323] WARNING: pipe error (3): Connection reset by peer: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 459 [Child 29323] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29323] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29322] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29322] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29313] WARNING: pipe error (3): Connection reset by peer: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 459 [Child 29313] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29313] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29314] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29314] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29319] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 [Child 29319] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-cen-l64-ntly-000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 1753 Trace/breakpoint trap (core dumped) (ERROR)-(Exit Code 133)-(Fatal error signal 5)
The issue here is that LastPass is trying to link against GTK2, which cannot occur in the same address space as GTK3 symbols. I don't think we want to support plugins linking against GTK2- they should be fairly rare anyway. Thoughts, Jorge?
Flags: needinfo?(jorge)
CC'ing drew from LastPass
I assume this is referring to the e10s build of LastPass, since the production build uses the built-in nsIFilePicker. I can reproduce on Firefox nightly. Loading libgtk-3.so.0 instead of libglib-2.0.so.0 appears to resolve the issue. However, I can't simply switch, or the current release of Firefox will crash. Anyone know a good way of detecting which version of GTK the current process is using?
(In reply to Andrew Zitnay from comment #3) > I assume this is referring to the e10s build of LastPass, since the > production build uses the built-in nsIFilePicker. > > I can reproduce on Firefox nightly. Loading libgtk-3.so.0 instead of > libglib-2.0.so.0 appears to resolve the issue. However, I can't simply > switch, or the current release of Firefox will crash. > > Anyone know a good way of detecting which version of GTK the current process > is using? You could probably just use gtk_check_version(3, 0, 0) == NULL to determine if the runtime version is compatible with GTK3.
(In reply to Andrew Comminos [:acomminos] from comment #1) > I don't think we want to support plugins linking against GTK2- they should > be fairly rare anyway. Thoughts, Jorge? They should be very rare, yes, so I think this is a problem that can be solve case by case.
Flags: needinfo?(jorge)
(In reply to Andrew Comminos [:acomminos] from comment #4) > (In reply to Andrew Zitnay from comment #3) > > I assume this is referring to the e10s build of LastPass, since the > > production build uses the built-in nsIFilePicker. > > > > I can reproduce on Firefox nightly. Loading libgtk-3.so.0 instead of > > libglib-2.0.so.0 appears to resolve the issue. However, I can't simply > > switch, or the current release of Firefox will crash. > > > > Anyone know a good way of detecting which version of GTK the current process > > is using? > > You could probably just use gtk_check_version(3, 0, 0) == NULL to determine > if the runtime version is compatible with GTK3. Hmm... I think that presents me with a bit of a catch-22, since I can't call gtk_check_version() until I load libgtk, but I don't know what version of libgtk to load until I call gtk_check_version(). This may or may not be a bad way to resolve this, but it's my understanding that GTK 3 is only in use in Firefox 42 (nightly) right now. Is it guaranteed that Firefox 41 and below will remain on GTK 2, and Firefox 42+ will remain on GTK 3, or could this change? If it's set in stone, I could simply load based on Firefox version.
Alright, I think I've come up with a solution. I'm now calling dlopen() on libgtk-3.so.0 with RTLD_NOLOAD, so that it only succeeds if GTK 3 is already loaded within Firefox. If it fails, I call dlopen() on libgtk-x11-2.0.so.0 like before. I've rebuilt with this fix: https://rodan.lastpass.com/dev/lp_e10s.xpi You may need to restart Firefox after installing to ensure the new binary component is in use (I need to look at why this is happening).
Thank you Andrew! I just verified the fix works as expected. I'm therefore closing this bug. If there's something else to do (e.g. Developer Release Notes extra foot-note to the GTK3-switch) that has to be tracked, please re-open or add the (rare) addon-compat issue somewhere else.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.