Opened 2 weeks ago

Last modified 9 days ago

#27508 new defect

Starting Tor Browser 8 is broken on some older Linux systems

Reported by: gk Owned by: tbb-team
Priority: High Milestone:
Component: Applications/Tor Browser Version:
Severity: Normal Keywords: TorBrowserTeam201809, tbb-8.0-issues, tbb-regression
Cc: sukhbir, boklm Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description (last modified by gk)

We have reports from Linux Mint 17 and Ubuntu 14 users that Tor Browser is not starting anymore, probably due to #25485. The error they get is:

./firefox.real: relocation error: ./firefox.real: symbol _ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

There is a workaround posted (https://blog.torproject.org/comment/276770#comment-276770)

1 open file /Browser/firefox
2 comment line 10,12( if and fi) to use custom libstdc++
#if [ $? -ne 0 ]; then
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$basedir/TorBrowser/Tor/libstdc++/"
#fi

So, it seems our abicheck hack is not working as expected? I wonder what is going on here, though, as I have no issues updating from 7.5.6 to 8.0 on an Ubuntu 14.04.

Child Tickets

Change History (4)

comment:1 Changed 2 weeks ago by gk

Description: modified (diff)

comment:2 Changed 13 days ago by gk

Another comment (https://blog.torproject.org/comment/276825#comment-276825):

Yes, on Ubuntu 14.04.5 LTS same problem.

The problem is in reloc functions. To check use this:
$ ldd -r firefox.real
linux-vdso.so.1 => (0x00007ffe30ffb000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb7454bb000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb7452b7000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb7450af000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb744d9b000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb744a95000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb74487e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb7444b4000)
/lib64/ld-linux-x86-64.so.2 (0x0000560938ac7000)
symbol _ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)
symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference (./firefox.real)

comment:3 Changed 12 days ago by sukhbir

I wonder why I can't seem to reproduce this. I tested this on Mint 17.3, updating from 7.5.6 as well as doing a clean install. Even running abicheck manually seems to confirm the intended behaviour:

./Browser/abicheck: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by ./Browser/abicheck)
./Browser/abicheck: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./Browser/abicheck)

which means that for Mint 17.3, we use our bundled libstdc++ since abicheck returns a non-zero value. (Same is the case for Ubuntu 14.04).

$ ldd -r Browser/firefox.real 
Browser/firefox.real: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by Browser/firefox.real)
	linux-vdso.so.1 =>  (0x00007ffe347d6000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc9717ae000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc9715aa000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc9713a2000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc97109e000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc970d98000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc970b82000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc9707bd000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fc9719cc000)
symbol _ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)
symbol _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference	(Browser/firefox.real)

But that's expected as well for the same reason and goes away when you point it to the right version of libstdc++.

So yes, judging by the error and the fix, it would seem that abicheck is not working as intended. I have asked for the output of that on the blog and we will track the progress here.

comment:4 Changed 9 days ago by sukhbir

From the blog comments, it seems that abicheck runs fine: https://blog.torproject.org/comment/277026#comment-277026. So that means that we are missing something in abicheck and that's what I will now look at.

Note: See TracTickets for help on using tickets.