Hi,

My brand new sparkling OpenBSD VPS is currently in crisis.
Unfortunately there is no reset function to it and I forgot to set the
"break to ddb" function.  The vps admin staff is probably already asleep
so I'll have to wait a few hours.  On console it says repeatedly:

pagedaemon: wait_pla deadlock detected!

I have tracked it down to this function in uvm/uvm_pmemrange.c

-----
int
uvm_wait_pla(paddr_t low, paddr_t high, paddr_t size, int failok)
{
        struct uvm_pmalloc pma;
        const char *wmsg = "pmrwait";

        if (curproc == uvm.pagedaemon_proc) {
                /*
                 * XXX detect pagedaemon deadlock - see comment in
                 * uvm_wait(), as this is exactly the same issue.
                 */
                printf("pagedaemon: wait_pla deadlock detected!\n");
                msleep(&uvmexp.free, &uvm.fpageqlock, PVM, wmsg, hz >> 3);
#if defined(DEBUG)
                /* DEBUG: panic so we can debug it */
                panic("wait_pla pagedaemon deadlock");
#endif
                return 0;
        }
-----

Now while the opportunist in me says "we should really panic here"
instead of having a DEBUG kernel, the realist in me says to hold on and
think of others.

The question for me then is is the wait_pla pagedaemon deadlock
situation recoverable, or is this really a bug?

Hoping some kernel developers will pick this up and move it to tech@ if
that's appropriate!

I wish I had a dmesg for you but I didn't save one offline from this
vps.  I can tell you this much.  It's virtualbox'ed, has 2 cpu's and
since yesterday has some memory intensive application that may cause
some things to be moved to swap.  I'm gonna have to see to reduce the
memory on that I guess.

Regards,

-peter

Reply via email to