When running apps in the background by “xxx &” and try “jobs” or “ps” sometimes, it will crash. It is caused by some TT.jobs arguments freed.
static void run_lines(void) … // Three cases: 1) background & 2) pipeline | 3) last process in pipeline ; // If we ran a process and didn't pipe output, background or wait for exit if (pplist && TT.ff->blk->pout == -1) { if (ctl && !strcmp(ctl, "&")) { if (!TT.jobs.c) TT.jobcnt = 0; pplist->job = ++TT.jobcnt; arg_add(&TT.jobs, (void *)pplist); --> pplist is freed later... if (TT.options&FLAG_i) dprintf(2, "[%u] %u\n", pplist->job,pplist->pid); } else { toys.exitval = wait_pipeline(pplist); llist_traverse(pplist, (void *)free_process); } pplist = 0; } Then, in show_job(), it will use random points. Mingliang
_______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net