Crash on Debian Sid
From IRC:
<peace_peace> How would you stop version 12.5.6 of TOR Browser from failing with...
<peace_peace> Bail out! Gtk:ERROR:../../../gtk/gtkiconhelper.c:495:ensure_surface_for_gicon:
assertion failed (error == NULL): Failed to
load /usr/share/icons/Adwaita/scalable/status/image-missing.svg: Unable to load image-loading
module: /usr/lib/i386-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so: ./TorBrowser/Tor/libstdc++/libstdc++.so.6:
version `GLIBCXX_3.4.30' not found (required by /usr/lib/i386-linux-gnu/libicuuc.so.72)
<peace_peace> (gdk-pixbuf-error-quark, 5)
<peace_peace> ... when you ...
<peace_peace> 1.) right click on an image and
<peace_peace> 2.) scroll down the pop up menu to "Save Image As"
<peace_peace> ?
<richard> weird
<richard> looks like you need to update your glibcxx
<peace_peace> Yes, but, which Linux package contains glibcxx?
<peace_peace> Should the directory...
<peace_peace> .local/share/torbrowser/tbb/i686/tor-browser_en-US/Browser/
<peace_peace> have TWO copies of libstdc++.so.6 ?
<peace_peace> One in...
<peace_peace>
~/.local/share/torbrowser/tbb/i686/tor-browser_en-US/Browser/TorBrowser/Tor/libstdc++/libstdc++.so.6
<peace_peace> and a newer one in...
<richard> why do you have a .local/share/torbrowser folder?
<peace_peace> ~.local/share/torbrowser/tbb/i686/tor-browser_en-US/Browser/libstdc++/libstdc++.so.6
<peace_peace> richard, I'll check...
<peace_peace> richard, The folder ".local/share/torbrowser" is referred to by a package
named "torbrowser-launcher".
<richard> ah geez
<peace_peace> Please expound on "geez".
<richard> torbrowser-launcher
<richard> what version of debian are you on
<richard> fwiw the issue doesn't repro for me
<richard> in 12.5.6
<richard> so it sounds like your system libraries need to be update
<peace_peace> Franken-SID.
<peace_peace> A newer version of "torbrowser-launcher" is available.
<richard> that wouldn' matter
<richard> it's just a wrapper around downloading/deploying the browesr bundle
<richard> franken sid?
<richard> oh interesting
<richard> i think i get what's happening
<richard> well maybe
<richard> so we build+ship our own libstdc++ to handle running on older platforms
<richard> but it seems since your own sid (testing/unstable right?) gtk is pulling in libicuuc which
requires a *newer* version of libstdc++ than what we ship
<richard> which is def a weird one
<peace_peace> Thanks.
<richard> looks like we're building 3.4.28
<peace_peace> The computer has version 72.1-3 of the package named "libicu72".
<richard> can you open a bug on our gitlab
<richard> gitlab.torproject.org/tpo/applications/tor-browser
<richard> or something like that
<peace_peace> I searched /usr/lib/i386-linux-gnu/libicuuc.so.72* for version strings.
<peace_peace> I found...
<peace_peace> GLIBCXX_3.4, GLIBCXX_3.4.11 and GLIBCXX_3.4.30.
<richard> yeah that makes sense
<peace_peace> But no 3.4.28.
<richard> right our shipped libstdc++ has a max version string of 3.4.28
<richard> and libicuuc seems to require 3.4.30
<richard> so the browser loads our libraries and gtk, gtk uses our libstdc++, it loads libicuuc and
it tries to use functionality for a newer version of libstdc++
<peace_peace> Here's how I found the version strings...
<peace_peace> $ strings /usr/lib/i386-linux-gnu/libicuuc.so.72* | egrep GLIBCXX
<peace_peace> richard, Thank you for your thoughts.
<peace_peace> I need to go.
<richard> peace_peace: https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
<richard> looks like we would need to upgrade to at least gcc 12.1.0
So from what I can surmise, GTK is loading a library that depends on a newer version of libstdc++ than we ship, resulting in a crash.
Can we upgrade the version of gcc we use since we ship libstdc++ with the browser?
Edited by richard