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!  /
 [EMAIL PROTECTED]                    `------------------------------'

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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to