Modify

Opened 23 months ago

Last modified 23 months ago

#22098 new defect

procd can not change state from STATE_INIT to STATE_RUNNING causing reboot failed

Reported by: winsonoreo@… Owned by: developers
Priority: high Milestone:
Component: base system Version: Chaos Calmer 15.05
Keywords: procd, fork, reboot Cc:

Description (last modified by hauke)

During system boot up, procd failed to change from STATE_INIT to STATE_RUNNING leading to reboot failed.
By adding some debug output, when this happened, it turns out that in function q_initd_run(), fork() may failed, and the errno is 89.
Digging in kernel function do_fork(), it failed in copy_process()

...
 /* 
     * Process group and session signals need to be delivered to just the 
     * parent before the fork or both the parent and the child after the 
     * fork. Restart if a signal comes in before we add the new process to 
     * it's process group. 
     * A fatal signal pending means that current will exit, so the new 
     * thread can't slip out of an OOM kill (or normal SIGKILL). 
     */  
    recalc_sigpending();  
    if (signal_pending(current)) {  
        spin_unlock(¤t->sighand->siglock);  
        write_unlock_irq(&tasklist_lock);  
        retval = -ERESTARTNOINTR; 
        goto bad_fork_free_pid;  
    }  
...

kernel version is 2.6.36 and arch is mips, I reproduce it by rebooting the system.

Attachments (0)

Change History (2)

comment:1 Changed 23 months ago by hauke

  • Description modified (diff)

kernel version 2.6.36? Do you see the same problems with a not so ancient kernel? What fork of OpenWrt are you running?

comment:2 Changed 23 months ago by anonymous

running the master branch of CC. I will try kernel 3.0 to reproduce the problem.

Add Comment

Modify Ticket

Action
as new .
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.