Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Apr 2000 09:38:34 -0400 (EDT)
From:      Brian Fundakowski Feldman <green@FreeBSD.org>
To:        Michael Reifenberger <root@nihil.plaut.de>
Cc:        FreeBSD-Current <current@freebsd.org>, alc@FreeBSD.org
Subject:   Re: panic: vm_object_shadow: source object has OBJ_ONEMAPPING set.
Message-ID:  <Pine.BSF.4.21.0004150932460.16247-100000@green.dyndns.org>
In-Reply-To: <Pine.BSF.4.21.0004131747510.492-300000@nihil.plaut.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 13 Apr 2000, Michael Reifenberger wrote:

> Hi,
> when using a linux java app (SAP PlatinGUI 46Cb2) I get the above panic.
> FreeBSD -current. Kernel+mods in sync.
> Linux from ports. Linux-Java-JDK 1.2.2 from blackdown as of yesterday.
> Backtrace see crash.txt. Kernelconfig see nihil.
> Any thoughts anyone?

Yes, I've gotten these too.  I really believe the assumptions the code
there makes are wrong, and I've got a patch to correct them to what I
think they are supposed to be.  You've got the standard disclaimer on
the patch, though I assure you it has shown no ill effects to me, and I
noticed this bug through WINE.

I've asked Poul-Henning Kamp, who seems to also think that the code makes
wrong assumptions.  I've asked Matt Dillon and gotten no reply (a month
now, at least).  I've asked Alan Cox, and he'd help if we could get him
a test case so he can watch it happen himself and debug it himself.

Do you think you can find a specific set of steps for Alan to reproduce
it?

> Bye!
> ----
> Michael Reifenberger
> ^.*Plaut.*$, IT, R/3 Basis, GPS

--
 Brian Fundakowski Feldman           \  FreeBSD: The Power to Serve!  /
 green@FreeBSD.org                    `------------------------------'

Index: vm_object.c
===================================================================
RCS file: /usr2/ncvs/src/sys/vm/vm_object.c,v
retrieving revision 1.173
diff -u -r1.173 vm_object.c
--- vm_object.c	2000/03/26 15:20:22	1.173
+++ vm_object.c	2000/04/10 00:03:22
@@ -903,15 +903,25 @@
 	 * Don't create the new object if the old object isn't shared.
 	 */
 
-	if (source != NULL &&
-	    source->ref_count == 1 &&
-	    source->handle == NULL &&
-	    (source->type == OBJT_DEFAULT ||
-	     source->type == OBJT_SWAP))
-		return;
+	if (source != NULL) {
+		if ((source->flags & OBJ_ONEMAPPING) != 0 &&
+		    source->ref_count != 1)
+			printf("vm_object %p: flags %d, ref_count %d, " \
+			    "type %d, handle %p\n",
+			    source, source->flags, source->ref_count,
+			    source->type, source->handle);
+		if ((source->flags & OBJ_ONEMAPPING) != 0 ||
+		    (source->ref_count == 1 &&
+		     source->handle == NULL &&
+		     (source->type == OBJT_DEFAULT ||
+		      source->type == OBJT_SWAP)))
+			return;
+	}
 
-	KASSERT((source->flags & OBJ_ONEMAPPING) == 0,
+#if 0
+	KASSERT(source != NULL && (source->flags & OBJ_ONEMAPPING) == 0,
 		("vm_object_shadow: source object has OBJ_ONEMAPPING set.\n"));
+#endif
 
 	/*
 	 * Allocate a new object with the given length



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?Pine.BSF.4.21.0004150932460.16247-100000>