Hello,
I am trying to run PolyML on i386 linux, and I can't get it to work. I get segmentation faults with some kernel versions, and mmap failures with other versions.
I first tried with kernel 2.6.14 and with 2.6.17.2 (current one in debian-sid). On both setups PolyML segfaults. When run with GDB it shows:
c@cek:/tmp$ gdb ./poly-driver GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"...Using host libthread_db library +"/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) run Starting program: /tmp/poly-driver Poly/ML RTS version I386-4.1.4 (14:18:30 Nov 14 2005) Copyright (c) 2002-5 CUTS and contributors. Running with heap parameters (h=10240K,ib=2048K,ip=100%,mb=6144K,mp=20%)
Program received signal SIGSEGV, Segmentation fault. 0xa7e84bd8 in mmap () from /lib/tls/i686/cmov/libc.so.6
PolyML 4.2 also segfaults, on the same mmap, on both above kernel versions.
After upgrading the kernel to 2.6.18 I no longer get the segfault, but a proper error message. PolyML 4.2.0 compiled with EXTRA_DEBUG sais:
c@cek:~/isa/driver420$ ./poly Poly/ML RTS version I386-4.2.0 (07:41:26 Oct 6 2006) Copyright (c) 2002-5 CUTS and contributors. Running with heap parameters (h=10240K,ib=2048K,ip=100%,mb=6144K,mp=20%) Mapping ./ML_dbase Reading in header: 00002000 bytes MMAP; addr=0x20000000, len=00002000, prot=00000007, flags=00000032, fd=-1, off=00000000 Mapping in H->i_space Reading page table; page: 1, length: 00000004 MMAP; addr=0x20002000, len=00008000, prot=00000007, flags=00000032, fd=-1, off=00000000 Mapping in pages MMAP; addr=0x2070c000, len=00502000, prot=00000005, flags=00000012, fd=3, off=0000c000 Mapping in H->m_space Reading page table; page: 5, length: 00000001 MMAP; addr=0x2000a000, len=00002000, prot=00000007, flags=00000032, fd=-1, off=00000000 Mapping in pages MMAP; addr=0x2000c000, len=000e6000, prot=00000005, flags=00000012, fd=3, off=0050e000 allocating H->m_space.bitmap MMAP; addr=0x3f002000, len=00007300, prot=00000007, flags=00000022, fd=-1, off=00000000 allocating H->i_space.bitmap MMAP; addr=0x3f002000, len=00028100, prot=00000007, flags=00000022, fd=-1, off=00000000 MMAP; addr=0x3f002000, pa=0x6fe38000 MMAP; addr=0x3f000000, len=00002000, prot=00000007, flags=00000032, fd=-1, off=00000000 entry no 13, at address 3f0001a0 is a jumpentry to 80755c8 entry no 14, at address 3f0001c0 is a jumpentry to 807550e entry no 84, at address 3f000a80 is a jumpentry to 8074dbf MMAP; addr=0x97e00000, len=00200000, prot=00000007, flags=00000032, fd=-1, off=00000000 ** MMAP: Unable to map file: 0 to address 0x97e00000 ** errno=12: Cannot allocate memory ** This may be due to insufficient swap space, will retry in 2 seconds ...
And it never succeeds, but goes in an infinite loop.
PolyML 4.1.3 also fails, just the addresses in the error are different, the mmap that fails shows:
** MMAP: Unable to map file: 0 to address 0xa7e00000
PolyML seems to use only the kernel and glibc, so let me mention that my glibc version is 2.3.6.ds1-5 (latest one on debian-sid).
Any suggestions on how to get PolyML to run?
Cezary Kaliszyk