I started two instances on AWS, one c6g.medium (arm64) and a t2.micro (amd64).
I went through the reproducer listed in the testcase with libunwind-dev 1.2.1-8 from -release.
$ wget https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1999104/+attachment/5635122/+files/libunwind.tar.gz
$ sudo apt install -y build-essential libunwind-dev
$ tar xvf libunwind.tar.gz && cd test
test/
test/lib.hpp
test/main.cpp
test/lib.cpp
test/Makefile
~/test$ make all
g++ -g -shared-libgcc -shared -fPIC -std=c++11 -o libtest.so lib.cpp
g++ -g -shared-libgcc -o main -L. -Wl,-rpath,. main.cpp -ltest
g++ -g -shared-libgcc -o main_unwind -L. -Wl,-rpath,. main.cpp -ltest -lunwind
On arm64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
terminate called after throwing an instance of 'int'
terminate called recursively
Aborted (core dumped)
On amd64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
int throws lib
int caught main
As expected, we see arm64 abort the execution of the reproducer.
I then installed 1.2.1-8ubuntu0.1 from -proposed and rebuilt the reproducers:
$ make clean
$ make all
g++ -g -shared-libgcc -shared -fPIC -std=c++11 -o libtest.so lib.cpp
g++ -g -shared-libgcc -o main -L. -Wl,-rpath,. main.cpp -ltest
g++ -g -shared-libgcc -o main_unwind -L. -Wl,-rpath,. main.cpp -ltest -lunwind
On arm64:
$ ./main
int throws lib
int caught main
$ ./main_unwind
int throws lib
int caught main
On amd64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
int throws lib
int caught main
We see that 1.2.1-8ubuntu0.1 from -proposed does not abort, and instead runs as expected. There is no change in behaviour on amd64. The package in -proposed fixes the problem, happy to mark as verified for Bionic.
Performing verification for Bionic.
I started two instances on AWS, one c6g.medium (arm64) and a t2.micro (amd64).
I went through the reproducer listed in the testcase with libunwind-dev 1.2.1-8 from -release.
$ wget https:/ /bugs.launchpad .net/ubuntu/ +source/ libunwind/ +bug/1999104/ +attachment/ 5635122/ +files/ libunwind. tar.gz
$ sudo apt install -y build-essential libunwind-dev
$ tar xvf libunwind.tar.gz && cd test
test/
test/lib.hpp
test/main.cpp
test/lib.cpp
test/Makefile
~/test$ make all
g++ -g -shared-libgcc -shared -fPIC -std=c++11 -o libtest.so lib.cpp
g++ -g -shared-libgcc -o main -L. -Wl,-rpath,. main.cpp -ltest
g++ -g -shared-libgcc -o main_unwind -L. -Wl,-rpath,. main.cpp -ltest -lunwind
On arm64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
terminate called after throwing an instance of 'int'
terminate called recursively
Aborted (core dumped)
On amd64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
int throws lib
int caught main
As expected, we see arm64 abort the execution of the reproducer.
I then installed 1.2.1-8ubuntu0.1 from -proposed and rebuilt the reproducers:
$ make clean
$ make all
g++ -g -shared-libgcc -shared -fPIC -std=c++11 -o libtest.so lib.cpp
g++ -g -shared-libgcc -o main -L. -Wl,-rpath,. main.cpp -ltest
g++ -g -shared-libgcc -o main_unwind -L. -Wl,-rpath,. main.cpp -ltest -lunwind
On arm64:
$ ./main
int throws lib
int caught main
$ ./main_unwind
int throws lib
int caught main
On amd64:
~/test$ ./main
int throws lib
int caught main
~/test$ ./main_unwind
int throws lib
int caught main
We see that 1.2.1-8ubuntu0.1 from -proposed does not abort, and instead runs as expected. There is no change in behaviour on amd64. The package in -proposed fixes the problem, happy to mark as verified for Bionic.