NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PR/46153 CVS commit: src/sys/kern



On Sat, Mar 10, 2012 at 02:39:27PM +0100, Manuel Bouyer wrote:
> db{2}> tr
> pmap_deactivate() at netbsd:pmap_deactivate+0x93
> mi_switch() at netbsd:mi_switch+0x2c5
> kpreempt() at netbsd:kpreempt+0xe2
> Xpreemptrecurse() at netbsd:Xpreemptrecurse+0x15
> spawn_return() at netbsd:spawn_return+0x1eb

BTW,
(gdb) l *(spawn_return+0x1eb)
0xffffffff804bfe4d is in spawn_return 
(/dsk/l1/misc/bouyer/quota2/src/sys/kern/kern_exec.c:1917).
1912             * of spawn_data again), signal parent and exit this process.
1913             */
1914            mutex_enter(&spawn_data->sed_mtx_child);
1915            spawn_data->sed_error = error;
1916            cv_signal(&spawn_data->sed_cv_child_ready);
1917            mutex_exit(&spawn_data->sed_mtx_child);
1918            mutex_enter(l->l_proc->p_lock);
1919            exit1(l, W_EXITCODE(error, SIGABRT));
1920    }

and we have:
 report_error:
        if (have_reflock)
                rw_exit(&l->l_proc->p_reflock);

        /* stop using kernel vmspace (if we haven't already) */
        if (l->l_proc->p_vmspace) {   
                KPREEMPT_DISABLE(l);  
                pmap_deactivate(l);  
                l->l_proc->p_vmspace = NULL;
                KPREEMPT_ENABLE(l);  
        }

I guess KPREEMPT_ENABLE() should not be there (as we now have a NULL vmspace)
but I don't know where we should put it, or if it should be there at
all (as we're about to exit()).

I just removed it, and all tests in tests/lib/libc/gen/posix_spawn pass.

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index