Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Nov 1998 22:42:14 +0200 (EET)
From:      Alexander Litvin <archer@lucky.net>
To:        dg@root.com
Cc:        current@FreeBSD.ORG
Subject:   Re: The infamous dying daemons bug
Message-ID:  <199811092042.WAA27346@grape.carrier.kiev.ua>
In-Reply-To: <199811081924.LAA06586@root.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <199811081924.LAA06586@root.com> you wrote:

>>Please don't tell anyone, but I am almost convinced that the bug is 
>>here:
>>
>>-----swap_pager.c, line 1132------
>>                /*
>>                 * If we're out of swap space, then attempt to free
>>                 * some whenever multiple pages are brought in. We
>>                 * must set the dirty bits so that the page contents
>>                 * will be preserved.
>>                 */
>>                if (SWAPLOW ||
>>                        (vm_swap_size < btodb((cnt.v_page_count - cnt.v_wire_count)) * PAGE_SIZE)) {
>>                        for (i = 0; i < count; i++) {
>>                                m[i]->dirty = VM_PAGE_BITS_ALL;
>>                        }
>>                        swap_pager_freespace(object,
>>                                m[0]->pindex + paging_offset, count);   
>>                }
>>------------------------------------
>>If I sysctl out the call to swap_pager_freespace, all symptoms 
>>disappear. This code activates at about the time when the "suggest more 
>>swap space" message printed. IIRC, it was introduced by John Dyson this 
>>winter.
>>
>>(Perhaps, the code just triggers a bug elsewhere... No idea what is 
>>wrong).

DG>    I don't see anything wrong with it, but if it is the cause of the
DG> problem, it can safely be removed. I'd suggest that people #if 0 out
DG> the code and see if the problem completely vanishes.

If it is not the cause, it is at least related. May be, someone
more skillful may investigate it?

I can quite reliably reproduce 'daemons dying' just by starting
a bunch of special 'memory hungry' progs. If I comment out
swap_pager_freespace() in the code above, that doesn't work
anymore. At least with the memory usage pattern of the above
mantioned 'memory hungry' progs, daemons keep running.

HURRAY?

Though, when I tried to stress the system with 'make -j# buildworld',
something weird happened. Particularily, I got a corrupt ld built.
It happened several times -- sometimes it is a bootstrap ld, and
as a result my buildworld just stopped (ld running indefinitely).
The last time it was a dynamic ld which I 'managed' to install into
/usr/libexec/elf/ld (made installworld) -- I was forced to extract
binary from 3.0-RELEASE distribution, since my system was not
able to build anything.

It may or may not be related to kernel stuff. The fact that it always
happen to ld makes me feel that it may be just build process coruption.

Anybody seen things like this? Anybody interested in details?

DG> -DG

DG> David Greenman
DG> Co-founder/Principal Architect, The FreeBSD Project

--- 
Weiler's Law:
        Nothing is impossible for the man who doesn't have to do it
himself.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199811092042.WAA27346>