Comment 11 for bug 1268838

Revision history for this message
Thomas Schwinge (tschwinge) wrote :

(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?