(At least in my case) it's a SIGSEGV in libcdio (libcdio13:amd64 0.83-4.2ubuntu1), reproducable with the "cd-info" tool:
$ LD_LIBRARY_PATH=./lib/driver/.libs:./lib/iso9660/.libs gdb -q --args src/.libs/cd-info /dev/sr1
Reading symbols from src/.libs/cd-info...done.
(gdb) r
[...]
CD Analysis Report
Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
296 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: Datei oder Verzeichnis nicht gefunden.
(gdb) bt
#0 __strcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:296
#1 0x00007ffff79b2b02 in cdtext_data_init (p_user_data=p_user_data@entry=0x55555575e480, i_first_track=<optimized out>, wdata=wdata@entry=0x7fffffffbe60 "\001j", i_data=72, i_data@entry=360, set_cdtext_field_fn=set_cdtext_field_fn@entry=0x7ffff79b06c0 <set_cdtext_field_generic>) at cdtext.c:298
#2 0x00007ffff79bd53b in mmc_init_cdtext_private (p_user_data=p_user_data@entry=0x55555575e480, run_mmc_cmd=0x7ffff79b4360 <run_mmc_cmd_linux>, set_cdtext_field_fn=set_cdtext_field_fn@entry=0x7ffff79b06c0 <set_cdtext_field_generic>) at mmc/mmc.c:384
#3 0x00007ffff79b146a in init_cdtext_generic (p_env=p_env@entry=0x55555575e480) at _cdio_generic.c:452
#4 0x00007ffff79b14d6 in get_cdtext_generic (p_user_data=0x55555575e480, i_track=<optimized out>) at _cdio_generic.c:278
#5 0x0000555555557996 in print_cdtext_track_info (p_cdio=<optimized out>, i_track=<optimized out>, psz_msg=0x5555555599c3 "\nCD-TEXT for Disc:")
at cd-info.c:413
#6 0x0000555555558443 in print_cdtext_info (i_first_track=1 '\001', i_tracks=<optimized out>, p_cdio=0x555555762860) at cd-info.c:433
#7 print_analysis (ms_offset=0, cdio_iso_analysis=..., fs=1, first_data=-1, num_audio=8, i_tracks=<optimized out>, i_first_track=1 '\001', p_cdio=0x555555762860, track_format=<optimized out>) at cd-info.c:641
#8 0x0000555555557317 in main (argc=<optimized out>, argv=<optimized out>) at cd-info.c:1222
(gdb) frame 1
#1 0x00007ffff79b2b02 in cdtext_data_init (p_user_data=p_user_data@entry=0x55555575e480, i_first_track=<optimized out>, wdata=wdata@entry=0x7fffffffbe60 "\001j", i_data=72, i_data@entry=360, set_cdtext_field_fn=set_cdtext_field_fn@entry=0x7ffff79b06c0 <set_cdtext_field_generic>) at cdtext.c:298
298 sprintf(buffer,"%s",cdtext_genre[(p_data->text[0] << 8) + p_data->text[1]]);
(gdb) list
293 /* not a character pack */
294 if (p_data->type == CDIO_CDTEXT_GENRE) {
295 i_track = p_data->i_track;
296 /* seems like it is a uint_16 in the first 2 bytes */
297 if((p_data->text[0] << 8) + p_data->text[1] != CDIO_CDTEXT_GENRE_UNUSED) {
298 sprintf(buffer,"%s",cdtext_genre[(p_data->text[0] << 8) + p_data->text[1]]);
299 SET_CDTEXT_FIELD(CDTEXT_GENRE);
300 }
301 #ifdef _DEBUG_CDTEXT
302 printf("GENRE information present: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
This doesn't happen anymore/has been fixed in a later version, such as the one packaged in Debian libcdio15:amd64 0.92-2.
Rebuilding the gvfs packages against that one (no source code changes required), and installing these, the SIGSEGV then doesn't happen anymore, and the audio CD can be mounted/played fine.
As there as been quite some churn in the CD-Text source code in libcdio, I couldn't easily identify the actual change that fixed this issue.
Should libcdio15 be added to Ubuntu, and gvfs build-depend on that one?
(At least in my case) it's a SIGSEGV in libcdio (libcdio13:amd64 0.83-4.2ubuntu1), reproducable with the "cd-info" tool:
$ LD_LIBRARY_ PATH=./ lib/driver/ .libs:. /lib/iso9660/ .libs gdb -q --args src/.libs/cd-info /dev/sr1 cd-info. ..done.
Reading symbols from src/.libs/
(gdb) r
[...]
CD Analysis Report
Program received signal SIGSEGV, Segmentation fault. sse2_unaligned () at ../sysdeps/ x86_64/ multiarch/ strcpy- sse2-unaligned. S:296 x86_64/ multiarch/ strcpy- sse2-unaligned. S: Datei oder Verzeichnis nicht gefunden. sse2_unaligned () at ../sysdeps/ x86_64/ multiarch/ strcpy- sse2-unaligned. S:296 data=p_ user_data@ entry=0x5555557 5e480, i_first_ track=< optimized out>,
wdata= wdata@entry= 0x7fffffffbe60 "\001j", i_data=72, i_data@entry=360,
set_cdtext_ field_fn= set_cdtext_ field_fn@ entry=0x7ffff79 b06c0 <set_cdtext_ field_generic> ) at cdtext.c:298 cdtext_ private (p_user_ data=p_ user_data@ entry=0x5555557 5e480, run_mmc_ cmd=0x7ffff79b4 360 <run_mmc_ cmd_linux> ,
set_cdtext_ field_fn= set_cdtext_ field_fn@ entry=0x7ffff79 b06c0 <set_cdtext_ field_generic> ) at mmc/mmc.c:384 p_env@entry= 0x55555575e480) at _cdio_generic.c:452 data=0x55555575 e480, i_track=<optimized out>) at _cdio_generic.c:278 track_info (p_cdio=<optimized out>, i_track=<optimized out>, psz_msg= 0x5555555599c3 "\nCD-TEXT for Disc:") 0x555555762860) at cd-info.c:433 analysis= ..., fs=1, first_data=-1, num_audio=8, i_tracks=<optimized out>, i_first_track=1 '\001',
p_cdio= 0x555555762860, track_format= <optimized out>) at cd-info.c:641 data=p_ user_data@ entry=0x5555557 5e480, i_first_ track=< optimized out>,
wdata= wdata@entry= 0x7fffffffbe60 "\001j", i_data=72, i_data@entry=360,
set_cdtext_ field_fn= set_cdtext_ field_fn@ entry=0x7ffff79 b06c0 <set_cdtext_ field_generic> ) at cdtext.c:298 buffer, "%s",cdtext_ genre[( p_data- >text[0] << 8) + p_data->text[1]]); GENRE_UNUSED) { buffer, "%s",cdtext_ genre[( p_data- >text[0] << 8) + p_data->text[1]]); FIELD(CDTEXT_ GENRE);
__strcpy_
296 ../sysdeps/
(gdb) bt
#0 __strcpy_
#1 0x00007ffff79b2b02 in cdtext_data_init (p_user_
#2 0x00007ffff79bd53b in mmc_init_
#3 0x00007ffff79b146a in init_cdtext_generic (p_env=
#4 0x00007ffff79b14d6 in get_cdtext_generic (p_user_
#5 0x0000555555557996 in print_cdtext_
at cd-info.c:413
#6 0x0000555555558443 in print_cdtext_info (i_first_track=1 '\001', i_tracks=<optimized out>, p_cdio=
#7 print_analysis (ms_offset=0, cdio_iso_
#8 0x0000555555557317 in main (argc=<optimized out>, argv=<optimized out>) at cd-info.c:1222
(gdb) frame 1
#1 0x00007ffff79b2b02 in cdtext_data_init (p_user_
298 sprintf(
(gdb) list
293 /* not a character pack */
294 if (p_data->type == CDIO_CDTEXT_GENRE) {
295 i_track = p_data->i_track;
296 /* seems like it is a uint_16 in the first 2 bytes */
297 if((p_data->text[0] << 8) + p_data->text[1] != CDIO_CDTEXT_
298 sprintf(
299 SET_CDTEXT_
300 }
301 #ifdef _DEBUG_CDTEXT
302 printf("GENRE information present: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
This doesn't happen anymore/has been fixed in a later version, such as the one packaged in Debian libcdio15:amd64 0.92-2.
Rebuilding the gvfs packages against that one (no source code changes required), and installing these, the SIGSEGV then doesn't happen anymore, and the audio CD can be mounted/played fine.
As there as been quite some churn in the CD-Text source code in libcdio, I couldn't easily identify the actual change that fixed this issue.
Should libcdio15 be added to Ubuntu, and gvfs build-depend on that one?