diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 80404ee850bfb7232dbd856d05eef4b236a68b39..b9505ae8b7a27528071e750b9a415d3b1e42673b 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,7 @@
+1999-11-02  Bryce McKinlay  <bryce@albatross.co.nz>
+
+	* gcconfig.h: Don't define MPROTECT_VDB on Linux/i386.
+
 1999-11-02  Tom Tromey  <tromey@cygnus.com>
 
 	* quick_threads.c: Include gcconfig.h, not boehm-config.h.
diff --git a/boehm-gc/gcconfig.h b/boehm-gc/gcconfig.h
index 47219095f33d2e5ea0f2648e37b58eb67cca3b68..384a46543f3b5b2c95f5f4b8723eb9f34d76a595 100644
--- a/boehm-gc/gcconfig.h
+++ b/boehm-gc/gcconfig.h
@@ -713,7 +713,9 @@
 	/* with 2GB physical memory will usually move the user		*/
 	/* address space limit, and hence initial SP to 0x80000000.	*/
 #       if !defined(LINUX_THREADS) || !defined(REDIRECT_MALLOC)
-#	    define MPROTECT_VDB
+	/* libgcj: Linux threads don't interact well with the read() wrapper.
+	   Not defining MPROTECT_VDB fixes this.  */
+/* #	    define MPROTECT_VDB */
 #	else
 	    /* We seem to get random errors in incremental mode,	*/
 	    /* possibly because Linux threads is itself a malloc client */