bug-mit-scheme
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-mit-scheme] Latest snapshot on latest Ubuntu.


From: Matt Birkholz
Subject: [Bug-mit-scheme] Latest snapshot on latest Ubuntu.
Date: Fri, 26 Sep 2008 13:46:51 -0700

The "Ubuntu 7.10" packages for the latest snapshot
(mit-scheme_7.7.90+20080130-0gutsy1_i386.deb) were working great with
Ubuntu 8.04 until recently.  (This may have broken months ago and I
just noticed.)  It seems that the kernel (2.6.24) says "permission
denied" to a request to mmap the address 0x1000, which results in this
curious behavior.

        $ /usr/bin/scheme
        Requested allocation is too large.
        Try again with a smaller argument to '--heap'.

The snapshot can be fixed for Ubuntu Hardy by applying this patch,
which I found in CVS.

*** v20080130-orig/src/microcode/ux.c   Wed Jan 30 13:02:21 2008
--- vHEAD/mit-scheme/v7/src/microcode/ux.c      Sun May  4 00:13:37 2008
***************
*** 1,6 ****
  /* -*-C-*-
  
! $Id: ux.c,v 1.35 2008/01/30 20:02:21 cph Exp $
  
  Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
      1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
--- 1,6 ----
  /* -*-C-*-
  
! $Id: ux.c,v 1.36 2008/05/04 07:13:37 cph Exp $
  
  Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
      1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
***************
*** 677,682 ****
--- 677,698 ----
      request = (((requested_length + (ps - 1)) / ps) * ps);
    }
  
+ #ifdef __linux__
+   /* AppArmor can specify a minimum usable address.  In that case we
+      need to detect it and compensate.  */
+   {
+     FILE * s = (fopen ("/proc/sys/vm/mmap_min_addr", "r"));
+     if (s != 0)
+       {
+       unsigned long new_min_result;
+       int rc = (fscanf (s, "%lu", (&new_min_result)));
+       fclose (s);
+       if ((rc == 1) && (new_min_result > min_result))
+         min_result = new_min_result;
+       }
+   }
+ #endif
+ 
    result = (mmap_heap_malloc_search (request, min_result, max_result));
  
    if (result != 0)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]