We've had similar cases int he past where new releases glibc or compiler had new instructions breaking the TCG mode.
So I spawned a focal and a bionic image - and then remodeled them to run in emulation mode.
And indeed Bionic works without any crashes, so it must be something in the guest that isn't in Bionic yet. Focal OTOH crashes very similarly - so the userspace feature/instructions was added in 20.04. (BTW 20.04 feels more broken, e.g. it does not at all shut down anymore - but the crashes are just the same).
The focal crashes affect the same programs (rm, find) and look similar:
rm
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000727ed5063b0 in quotearg_buffer_restyled (buffer=buffer@entry=0x727ed530130 <slot0> "'", buffersize=buffersize@entry=256,
arg=arg@entry=0x800314f727070000 <error: Cannot access memory at address 0x800314f727070000>, argsize=argsize@entry=18446744073709551615, quoting_style=shell_always_quoting_style,
flags=flags@entry=1, quote_these_too=quote_these_too@entry=0x7fffdbb42770, left_quote=0x0, right_quote=0x0) at lib/quotearg.c:400
400 lib/quotearg.c: No such file or directory.
(gdb) bt
#0 0x00000727ed5063b0 in quotearg_buffer_restyled (buffer=buffer@entry=0x727ed530130 <slot0> "'", buffersize=buffersize@entry=256,
arg=arg@entry=0x800314f727070000 <error: Cannot access memory at address 0x800314f727070000>, argsize=argsize@entry=18446744073709551615, quoting_style=shell_always_quoting_style,
flags=flags@entry=1, quote_these_too=quote_these_too@entry=0x7fffdbb42770, left_quote=0x0, right_quote=0x0) at lib/quotearg.c:400
#1 0x00000727ed509144 in quotearg_n_options (options=0x7fffdbb42768, argsize=18446744073709551615, arg=0x800314f727070000 <error: Cannot access memory at address 0x800314f727070000>, n=0)
at lib/quotearg.c:907
#2 quotearg_n_style (arg=0x800314f727070000 <error: Cannot access memory at address 0x800314f727070000>, s=shell_escape_always_quoting_style, n=0) at lib/quotearg.c:958
#3 quotearg_style (s=shell_escape_always_quoting_style, arg=0x800314f727070000 <error: Cannot access memory at address 0x800314f727070000>) at lib/quotearg.c:972
#4 0x00000727ed50377c in excise (ent=ent@entry=0x727f71415b0, x=x@entry=0x7fffdbb42bb8, is_dir=is_dir@entry=false, fts=<optimized out>) at src/remove.c:406
#5 0x00000727ed504644 in rm_fts (x=<optimized out>, ent=0x727f71415b0, fts=<optimized out>) at src/remove.c:548
#6 rm (file=<optimized out>, x=0x7fffdbb42bb8) at src/remove.c:607
#7 0x00000727ed502d98 in main (argc=<optimized out>, argv=<optimized out>) at src/rm.c:370
find
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __strlen_power8 () at ../sysdeps/powerpc/powerpc64/power8/strlen.S:36
36 ../sysdeps/powerpc/powerpc64/power8/strlen.S: No such file or directory.
(gdb) bt
#0 __strlen_power8 () at ../sysdeps/powerpc/powerpc64/power8/strlen.S:36
#1 0x00007e0f566971f8 in __vfprintf_internal (s=0x7e0f568417e8 <_IO_2_1_stdout_>, format=0x6b007417f10 "%s\n", ap=0x7ffff96f4690 "", mode_flags=<optimized out>) at vfprintf-internal.c:1688
#2 0x00007e0f56772750 in ___fprintf_chk (fp=<optimized out>, flag=<optimized out>, format=<optimized out>) at fprintf_chk.c:33
#3 0x000006b0073d7960 in fprintf (__fmt=0x6b007417f10 "%s\n", __stream=<optimized out>) at /usr/include/powerpc64le-linux-gnu/bits/stdio2.h:100
#4 print_quoted (fp=<optimized out>, qopts=<optimized out>, dest_is_tty=<optimized out>, format=0x6b007417f10 "%s\n", s=<optimized out>) at printquoted.c:77
#5 0x000006b0073bad44 in pred_print () at pred.c:554
#6 0x000006b0073c8814 in apply_predicate (pathname=0x601e4c45b0060000 <error: Cannot access memory at address 0x601e4c45b0060000>, stat_buf=0x7ffff96f6888, p=0x6b0454c10d0) at util.c:1093
#7 0x000006b0073ba368 in pred_and (pred_ptr=0x6b0454c0f90, stat_buf=0x7ffff96f6888, pathname=0x601e4c45b0060000 <error: Cannot access memory at address 0x601e4c45b0060000>) at pred.c:224
#8 pred_and (pathname=0x601e4c45b0060000 <error: Cannot access memory at address 0x601e4c45b0060000>, stat_buf=0x7ffff96f6888, pred_ptr=0x6b0454c0f90) at pred.c:219
#9 0x000006b0073c8814 in apply_predicate (pathname=0x601e4c45b0060000 <error: Cannot access memory at address 0x601e4c45b0060000>, stat_buf=0x7ffff96f6888, p=0x6b0454c0f90) at util.c:1093
#10 0x000006b0073b89b8 in visit (pstat=<optimized out>, ent=0x6b0454c1540, p=0x6b0454c1390) at ftsfind.c:181
#11 consider_visiting (p=0x6b0454c1390, ent=0x6b0454c1540) at ftsfind.c:507
#12 0x000006b0073b8f80 in find (arg=0x7ffff96fff63 "/var/lib/update-notifier/updates-available") at ftsfind.c:584
#13 0x000006b0073b7f90 in process_all_startpoints (argv=<optimized out>, argc=<optimized out>) at ftsfind.c:625
#14 main (argc=<optimized out>, argv=<optimized out>) at ftsfind.c:734
We've had similar cases int he past where new releases glibc or compiler had new instructions breaking the TCG mode.
So I spawned a focal and a bionic image - and then remodeled them to run in emulation mode.
And indeed Bionic works without any crashes, so it must be something in the guest that isn't in Bionic yet. Focal OTOH crashes very similarly - so the userspace feature/ instructions was added in 20.04. (BTW 20.04 feels more broken, e.g. it does not at all shut down anymore - but the crashes are just the same).
The focal crashes affect the same programs (rm, find) and look similar:
rm
Program terminated with signal SIGSEGV, Segmentation fault. buffer_ restyled (buffer= buffer@ entry=0x727ed53 0130 <slot0> "'", buffersize= buffersize@ entry=256, arg@entry= 0x800314f727070 000 <error: Cannot access memory at address 0x800314f727070 000>, argsize= argsize@ entry=184467440 73709551615, quoting_ style=shell_ always_ quoting_ style, flags@entry= 1, quote_these_ too=quote_ these_too@ entry=0x7fffdbb 42770, left_quote=0x0, right_quote=0x0) at lib/quotearg.c:400 buffer_ restyled (buffer= buffer@ entry=0x727ed53 0130 <slot0> "'", buffersize= buffersize@ entry=256, arg@entry= 0x800314f727070 000 <error: Cannot access memory at address 0x800314f727070 000>, argsize= argsize@ entry=184467440 73709551615, quoting_ style=shell_ always_ quoting_ style, flags@entry= 1, quote_these_ too=quote_ these_too@ entry=0x7fffdbb 42770, left_quote=0x0, right_quote=0x0) at lib/quotearg.c:400 0x7fffdbb42768, argsize= 184467440737095 51615, arg=0x800314f72 7070000 <error: Cannot access memory at address 0x800314f727070 000>, n=0) 27070000 <error: Cannot access memory at address 0x800314f727070 000>, s=shell_ escape_ always_ quoting_ style, n=0) at lib/quotearg.c:958 escape_ always_ quoting_ style, arg=0x800314f72 7070000 <error: Cannot access memory at address 0x800314f727070 000>) at lib/quotearg.c:972 entry=0x727f714 15b0, x=x@entry= 0x7fffdbb42bb8, is_dir= is_dir@ entry=false, fts=<optimized out>) at src/remove.c:406
#0 0x00000727ed5063b0 in quotearg_
arg=
flags=
400 lib/quotearg.c: No such file or directory.
(gdb) bt
#0 0x00000727ed5063b0 in quotearg_
arg=
flags=
#1 0x00000727ed509144 in quotearg_n_options (options=
at lib/quotearg.c:907
#2 quotearg_n_style (arg=0x800314f7
#3 quotearg_style (s=shell_
#4 0x00000727ed50377c in excise (ent=ent@
#5 0x00000727ed504644 in rm_fts (x=<optimized out>, ent=0x727f71415b0, fts=<optimized out>) at src/remove.c:548
#6 rm (file=<optimized out>, x=0x7fffdbb42bb8) at src/remove.c:607
#7 0x00000727ed502d98 in main (argc=<optimized out>, argv=<optimized out>) at src/rm.c:370
find powerpc/ powerpc64/ power8/ strlen. S:36 powerpc/ powerpc64/ power8/ strlen. S: No such file or directory. powerpc/ powerpc64/ power8/ strlen. S:36 0x6b007417f10 "%s\n", ap=0x7ffff96f4690 "", mode_flags= <optimized out>) at vfprintf- internal. c:1688 0x6b007417f10 "%s\n", __stream=<optimized out>) at /usr/include/ powerpc64le- linux-gnu/ bits/stdio2. h:100 tty=<optimized out>, format= 0x6b007417f10 "%s\n", s=<optimized out>) at printquoted.c:77 0x601e4c45b0060 000 <error: Cannot access memory at address 0x601e4c45b0060 000>, stat_buf= 0x7ffff96f6888, p=0x6b0454c10d0) at util.c:1093 0x6b0454c0f90, stat_buf= 0x7ffff96f6888, pathname= 0x601e4c45b0060 000 <error: Cannot access memory at address 0x601e4c45b0060 000>) at pred.c:224 0x601e4c45b0060 000 <error: Cannot access memory at address 0x601e4c45b0060 000>, stat_buf= 0x7ffff96f6888, pred_ptr= 0x6b0454c0f90) at pred.c:219 0x601e4c45b0060 000 <error: Cannot access memory at address 0x601e4c45b0060 000>, stat_buf= 0x7ffff96f6888, p=0x6b0454c0f90) at util.c:1093 update- notifier/ updates- available" ) at ftsfind.c:584 all_startpoints (argv=<optimized out>, argc=<optimized out>) at ftsfind.c:625
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __strlen_power8 () at ../sysdeps/
36 ../sysdeps/
(gdb) bt
#0 __strlen_power8 () at ../sysdeps/
#1 0x00007e0f566971f8 in __vfprintf_internal (s=0x7e0f568417e8 <_IO_2_1_stdout_>, format=
#2 0x00007e0f56772750 in ___fprintf_chk (fp=<optimized out>, flag=<optimized out>, format=<optimized out>) at fprintf_chk.c:33
#3 0x000006b0073d7960 in fprintf (__fmt=
#4 print_quoted (fp=<optimized out>, qopts=<optimized out>, dest_is_
#5 0x000006b0073bad44 in pred_print () at pred.c:554
#6 0x000006b0073c8814 in apply_predicate (pathname=
#7 0x000006b0073ba368 in pred_and (pred_ptr=
#8 pred_and (pathname=
#9 0x000006b0073c8814 in apply_predicate (pathname=
#10 0x000006b0073b89b8 in visit (pstat=<optimized out>, ent=0x6b0454c1540, p=0x6b0454c1390) at ftsfind.c:181
#11 consider_visiting (p=0x6b0454c1390, ent=0x6b0454c1540) at ftsfind.c:507
#12 0x000006b0073b8f80 in find (arg=0x7ffff96fff63 "/var/lib/
#13 0x000006b0073b7f90 in process_
#14 main (argc=<optimized out>, argv=<optimized out>) at ftsfind.c:734