Hi, I'd suggest the attached patch to be applied, so we can better see what happens to the growisofs child process.
The code unconditinally calls WEXITSTATUS (status) without making sure that WIFEXITED has returned true. This is undefined... but whatever - a separate issue. (also I don't actually like brasero_process_watch_child() to be utilized like that: g_timeout_add (500, brasero_process_watch_child, process); but this could be tweaked later) Reporters, could you please do the following: apt-get source brasero apt-get build-dep brasero put the attached patch in debian/patches/ echo check-child-status >> debian/patches/series dpkg-buildpackage and install this one... then try to reproduce the promlem, and get us the logs so we can better see what is going on with our beloved growisofs process. -- pub 4096R/0E4BD0AB <people.fccf.net/danchev/key pgp.mit.edu>
--- brasero-3.4.1.orig/libbrasero-burn/burn-process.c +++ brasero-3.4.1/libbrasero-burn/burn-process.c @@ -294,12 +294,27 @@ brasero_process_watch_child (gpointer da * brasero_job_finished/_error is called before the pipes are closed so * as to let plugins read stderr / stdout till the end and set a better * error message or simply decide all went well, in one word override */ - priv->return_status = WEXITSTATUS (status); +/* + priv->return_status = WEXITSTATUS (status); +*/ priv->watch = 0; priv->pid = 0; - + if (WIFEXITED(status)) { /* WEXITSTATUS macro should only be used if WIFEXITED returned true */ + printf("process exited, status=%d\n", WEXITSTATUS(status)); + priv->return_status = WEXITSTATUS (status); + BRASERO_JOB_LOG (data, "process exited with status %d", WEXITSTATUS (status)); + } + else if (WIFSIGNALED(status)) { + printf("process killed by signal %d\n", WTERMSIG(status)); + BRASERO_JOB_LOG (data, "process killed by signal %d", WTERMSIG(status)); + } + else if (WIFSTOPPED(status)) { + printf("process stopped by signal %d\n", WSTOPSIG(status)); + BRASERO_JOB_LOG (data, "process stopped by signal %d", WSTOPSIG(status)); + } +/* BRASERO_JOB_LOG (data, "process finished with status %i", WEXITSTATUS (status)); - +*/ result = brasero_process_finished (data); if (result == BRASERO_BURN_RETRY) { GError *error = NULL;