[Pkg-libburnia-devel] Bug#617409: brasero: Brasero corrupts all blank CD-R when burning (was: additional info)
George Danchev
danchev at spnet.net
Thu Jul 5 07:45:24 UTC 2012
On Thursday 05 July 2012 08:47:15 Thomas Schmitt wrote:
> Hi,
Hi All,
> i am currently the developer of libburn and libisofs.
>
> > https://bugzilla.gnome.org/show_bug.cgi?id=655601
>
> I know about such problems, but i do not know how to get into a
> discussion with Brasero developers.
> My impression is that the libisofs plugin causes libisofs to end
> prematurely. libburn is less of a suspect here.
>
>
> I have seen burn logs where burning ends after about 50 % of
> the expected output was produced by libisofs. I.e. libisofs would
> want to write more, but for some reason libburn is urged to finish
> burning (or falsely decides that burning is done).
> https://bugs.launchpad.net/ubuntu/+source/brasero/+bug/780117
> https://launchpadlibrarian.net/71440716/brasero_log.txt
>
> have:
> > BraseroLibisofs Finished track successfully
> > BraseroLibisofs disconnecting BraseroLibisofs from BraseroGrowisofs
> > ...
> > BraseroGrowisofs stdout: 3866984448/7761410048 (49.8%) @4.0x, remaining
> > 12:06 RBU 40.9% UBU 100.0% BraseroGrowisofs called
> > brasero_job_get_action
> > BraseroGrowisofs called brasero_job_set_current_action
> > BraseroGrowisofs stderr: /dev/sr0: flushing cache
> > ...
> > BraseroGrowisofs stderr: HUP
>
> Note that libburn is not involved here. Only libisofs. Burning is done
> via growisofs.
> Further it seems that BraseroLibisofs is the one which decides when
> the connection between both shall end.
>
>
> But in
> http://bugzilla-attachments.gnome.org/attachment.cgi?id=205344
> the work of libisofs seems to get completed.
>
> > brasero (libisofs)DEBUG : Processed 138390 of 138390 KB (100 %)
>
> So this might be two different problems.
> (In this run, libburn was indeed in charge of writing to media.)
>
>
> ---------------------------------------------------------------------
>
> I am not aware of any changes in libisofs or libburn which about a year
> ago could have introduced such problems.
> The combination of libisofs and libburn works fine in xorriso.
> xorriso does several backups per day for me, which then get thoroughly
> checked for readability and correct content.
>
> If somebody shows up who understands the code of the libisofs plugin
> and could make experiments, then i would be glad to help with finding
> the cause of the problem.
Same issue already reported long ago at:
https://mail.gnome.org/archives/brasero-list/2011-July/msg00004.html
actors: libisofs and growisofs brasero plugins
symptoms: 50% finished at ~49%
Looking at the logs and the brasero plugins code, the main suspect most likely
hidden at:
1) erroneous read of growisofs std out, wrt written data, and buffer filling,
hence a premature leave might occur:
plugins/growisofs/burn-growisofs.c
static BraseroBurnResult
brasero_growisofs_read_stdout (BraseroProcess *process, const gchar *line)
{
int perc_1, perc_2;
int speed_1, speed_2;
long long b_written, b_total;
/* Newer growisofs version have a different line pattern that shows
* drive buffer filling. */
if (sscanf (line, "%10lld/%lld (%4d.%1d%%) @%2d.%1dx, remaining %*d:
%*d",
&b_written, &b_total, &perc_1, &perc_2, &speed_1,
&speed_2) == 6) {
BraseroJobAction action;
brasero_job_get_action (BRASERO_JOB (process), &action);
if (action == BRASERO_JOB_ACTION_ERASE && b_written >= 65536)
{
/* we nullified 65536 that's enough. A signal SIGTERM
* will be sent in process.c. That's not the best way
* to do it but it works. */
brasero_job_finished_session (BRASERO_JOB (process));
return BRASERO_BURN_OK;
}
2) premature ending of the libisofs thread:
static gpointer
brasero_libisofs_thread_started (gpointer data) {
...
if (brasero_job_get_fd_out (BRASERO_JOB (self), NULL) ==
BRASERO_BURN_OK)
brasero_libisofs_write_image_to_fd_thread (self);
...
Nothing more concrete norrowed down yet
--
pub 4096R/0E4BD0AB <people.fccf.net/danchev/key pgp.mit.edu>
More information about the Pkg-libburnia-devel
mailing list