Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Oct 1997 18:48:12 +0200 (SAT)
From:      Graham Wheeler <gram@cdsec.com>
To:        hackers@freebsd.org
Subject:   Re: Bug in 2.2.2
Message-ID:  <199710201648.SAA11704@cdsec.com>

next in thread | raw e-mail | index | archive | help
> 
> 	can you tell me how to reproduce it within X hours?
> 	if i remember correctly, it was failing every X hours
> 	for you.  if its statically linked i can hack on 
> 	the shared library and see if i can track this down.

I wrote a small program to exercise the heap and ran it for about ten million
iterations without a problem. Then I decided to add a periodic call to fork(),
as both Midnight Commander and the firewall gateway program both do plenty 
of these. When I ran this the O/S panicked almost immediately.

Here is the program:

// A simple program to exercise the heap.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>

main()
{
    const int vsize = 10000;
    char **vector = new char*[vsize];
    int i, allocs = 0, deletes = 0;
    int seed = time(0);
    srand(seed);
    for (i = 0; i < vsize; i++) vector[i] = 0;
    i = 0;
    for (;;)
    {
	if ((i%100000) == 0)
	    printf("%d: alloc %d delete %d seed %d\n",
			i, allocs, deletes, seed);
	if ((i % 100) == 0)
	{
	    int pid = fork();
	    if (pid == 0) exit(0);
	}
	int slot = random() % vsize;
	if (vector[slot])
	{
	    delete [] vector[slot];
	    vector[slot] = 0;
	    deletes++;
	}
	else
	{
	    int l = (random() % 4096)+1;
	    vector[slot] = new char[l];
	    memset(vector[slot], l, l);
	    allocs++;
	}
	if (++i < 0) i = 0;
    }
}

I hadn't bothered doing any signal catching here; this was quick 'n dirty.
Still, it shouldn't cause a panic. Perhaps there is a connection between
this and the other problem?

> > So it seems there is indeed a bug, either in phkmalloc or in some 
> > other FreeBSD library code which uses phkmalloc.

I strongly suspect the latter may be the case, and that the nature of
the bug is such that it affects phkmalloc but not the other malloc. 

cheers
gram
-- 
Dr Graham Wheeler                          E-mail: gram@cdsec.com
Citadel Data Security                      Phone:  +27(21)23-6065/6/7
Internet/Intranet Network Specialists      Mobile: +27(83)-253-9864
Firewalls/Virtual Private Networks         Fax:    +27(21)24-3656
Data Security Products                     WWW:    http://www.cdsec.com/






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