Hello Jeremy,
can you please apply the "patch" below to brasero, rebuild it and
retry goobox in your environment?

Thanks a lot!

Greetings

              Helge

----- Forwarded message from Andreas Henriksson <[email protected]> -----

> Date: Thu, 12 Jan 2017 13:32:08 +0100
> From: Andreas Henriksson <[email protected]>
> To: Helge Kreutzmann <[email protected]>, Paolo Bacchilega 
> <[email protected]>
> Cc: [email protected]
> Subject: Re: Bug#842198: Fwd: Re: Bug#842198: goobox: Crashes when run in 
> VirtualBox
> User-Agent: Mutt/1.5.23 (2014-03-12)
> 
> Hello Helge Kreutzmann,
> 
> On Wed, Jan 11, 2017 at 10:34:17AM +0100, Helge Kreutzmann wrote:
> [...]
> > Can you have a look at this bug (#842198) to see why the valid call in
> > goobox crashes in brasero?
> [...]
> > > >----- Forwarded message from Jeremy Bicha <[email protected]> -----
> [....]
> > > >>#0  brasero_sense_data_not_ready (err=0x0, sense_data=0x7ffd2c31f2e0 
> > > >>"\360") at scsi-sense-data.c:118
> 
> brasero_sense_data_not_ready is called with a NULL err and at
> scsi-sense-data.c:118 err is derefenced, thus the segfault.
> 
> http://sources.debian.net/src/brasero/3.12.1-4/libbrasero-media/scsi-sense-data.c/?hl=110#L118
> 
> Next question is why is it called with a NULL err?
> 
> > > >>        res = BRASERO_SCSI_FAILURE
> > > >>#1  brasero_sense_data_process 
> > > >>(sense_data=sense_data@entry=0x7ffd2c31f2e0 "\360", err=err@entry=0x0) 
> > > >>at scsi-sense-data.c:210
> 
> ... also called with a NULL err.... (later passed down).
> 
> http://sources.debian.net/src/brasero/3.12.1-4/libbrasero-media/scsi-sense-data.c/?hl=199#L210
> 
> > > >>No locals.
> > > >>#2  0x00007fcb58ac5e7b in brasero_scsi_command_issue_sync 
> > > >>(command=command@entry=0x555bcefe8950, buffer=buffer@entry=0x0, 
> > > >>size=size@entry=0, error=error@entry=0x0) at scsi-sg.c:134
> 
> ... called with NULL error... (later passed down as err).
> 
> http://sources.debian.net/src/brasero/3.12.1-4/libbrasero-media/scsi-sg.c/?hl=103#L134
> 
> > > >>        sense_buffer = 
> > > >> "\360\000\002\000\000\000\000\n\000\000\000\000:\000\000\000\000\000"
> > > >>        transport = {interface_id = 83, dxfer_direction = -3, cmd_len = 
> > > >> 6 '\006', mx_sb_len = 19 '\023', iovec_count = 0, dxfer_len = 0, 
> > > >> dxferp = 0x0, cmdp = 0x555bcefe8950 "\036", sbp = 0x7ffd2c31f2e0 
> > > >> "\360", timeout = 0, flags = 0, pack_id = 0, usr_ptr = 0x0, status = 2 
> > > >> '\002', masked_status = 1 '\001', msg_status = 0 '\000', sb_len_wr = 
> > > >> 18 '\022', host_status = 0, driver_status = 8, resid = 0, duration = 
> > > >> 12, info = 1}
> > > >>        res = <optimized out>
> > > >>        cmd = 0x555bcefe8950
> > > >>        __func__ = "brasero_scsi_command_issue_sync"
> > > >>#3  0x00007fcb58ac5cff in brasero_sbc_medium_removal 
> > > >>(handle=handle@entry=0x555bcef80a20, 
> > > >>prevent_removal=prevent_removal@entry=0, error=error@entry=0x0) at 
> > > >>scsi-prevent-allow-medium-removal.c:91
> 
> ... called with NULL error... (later passed down).
> 
> http://sources.debian.net/src/brasero/3.12.1-4/libbrasero-media/scsi-prevent-allow-medium-removal.c/?hl=80#L91
> 
> > > >>        cdb = 0x555bcefe8950
> > > >>        res = <optimized out>
> > > >>        __func__ = "brasero_sbc_medium_removal"
> > > >>#4  0x00007fcb58ac15eb in brasero_drive_unlock (drive=0x555bcee96de0) 
> > > >>at brasero-drive.c:565
> [...]
> 
> Here we explicitly call brasero_sbc_medium_removal with NULL as the
> error argument, see:
> 
> http://sources.debian.net/src/brasero/3.12.1-4/libbrasero-media/brasero-drive.c/?hl=546#L565
> 
> 
> 
> Either this is wrong or the receivers should all be able to handle
> NULL as an argument.
> 
> Looking again at the case you're hitting in brasero_sense_data_not_ready
> which segfaults it has the comment:
> 
>                       /* No need to use BRASERO_SCSI_SET_ERRCODE
>                        * as this is not necessarily an error */
>                       *err = BRASERO_SCSI_NO_MEDIUM;
> 
> All other cases uses the BRASERO_SCSI_SET_ERRCODE and this
> macro does (among other things) "if (err) *err = ....;".
> Likely the code not using the macro needs to gain the "if (err)" part.
> 
> Would be appreciated if you could rebuild brasero with this change
> and verify it fixes the issue you're seeing.
> 
> Anyway, I think anyone still using brasero should look for an
> alternative. Brasero is basically dead. Using it is generally
> discouraged. (Or step up and volunteer to maintain it ofcourse!)
> 
> Regards,
> Andreas Henriksson
> 

----- End forwarded message -----

-- 
      Dr. Helge Kreutzmann                     [email protected]
           Dipl.-Phys.                   http://www.helgefjell.de/debian.php
        64bit GNU powered                     gpg signed mail preferred
           Help keep free software "libre": http://www.ffii.de/

Attachment: signature.asc
Description: Digital signature

Reply via email to