Hi Ondrej,

Regarding #15, I'm not sure this is correct. As you say, when the job
process terminates, job_process_terminated() gets called. This calls
log_handle_unflushed() and that function calls log_read_watch(), which
ultimately calls write(2). However, even if the write is successful
before 'initctl notify-disk-writeable' gets called, if you look at
log_handle_unflushed()...

 743 log_handle_unflushed (void *parent, Log *log)
 744 {
 745         NihListEntry  *elem;
 746 
 747         nih_assert (log);
 748         nih_assert (log->detached == 0);
 749 
 750         log_read_watch (log);
 751 
 752         if (! log->unflushed->len)
 753                 return 1;

So, if the write is successful and log->unflushed->len becomes zero, the
function returns 1 (meaning "log does not need to be added to the
unflushed list") and crucially the log is not added to the unflushed
list.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1447756

Title:
  segfault in log.c code causes phone reboot loops

To manage notifications about this bug go to:
https://bugs.launchpad.net/canonical-devices-system-image/+bug/1447756/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to