Re: [rvm-research] Jikes RVM under Valgrind
Sam Guyer <[email protected]>
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <CAEUSsAigbn48UPFY8LzgoatUGkJZYTm_CgfrrPZUX7GgMkN63Q@mail.gmail.com> |
Hey Karl, How's it going? I'm back from my trip if you want to discuss. On Mon, Jul 7, 2014 at 6:33 PM, Karl Cronburg <[email protected]> wrote: > Robin, > > Adjusting max-mappable.address to avoid that address gets rid of the mmap > error, but ends in a SIGSEGV. GDB gives a backtrace saying: > > Program received signal SIGSEGV, Segmentation fault. > 0x4403b71d in ?? () > (gdb) backtrace > #0 0x4403b71d in ?? () > Cannot access memory at address 0x87b3e985 > > where 0x4403b71d is in the boot image code, and 0x87b3e985 is obviously > not in any mappings in /proc/pid/maps: > > ffcd9000-ffcfa000 rw-p 00000000 00:00 0 > fecf7000-fecf9000 rw-p 00000000 00:00 0 > 85c14000-85e13000 rwxp 00000000 00:00 0 > 82e06000-8591f000 rwxp 00000000 00:00 0 > 82d13000-82d15000 ---p 00000000 00:00 0 > 82c13000-82d13000 rwxp 00000000 00:00 0 [stack:954] > 82c11000-82c13000 ---p 00000000 00:00 0 > 829f8000-82c11000 rwxp 00000000 00:00 0 > 82911000-82995000 rwxp 00000000 00:00 0 > 82910000-82911000 rw-s 00000000 08:01 2756887 > /tmp/vgdb-pipe-shared-mem-vgdb-954-by-karl-on-??? > 81e7d000-82910000 rwxp 00000000 00:00 0 > 77400000-80000000 rwxp 00000000 00:00 0 > 50000000-77400000 rwxp 00000000 00:00 0 > 47000000-47056000 r--p 00000000 08:01 2501782 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.rmap.image > 44000000-45061000 rwxp 00000000 08:01 2498986 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.code.image > 40000000-420af000 rwxp 00000000 08:01 2501780 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.data.image > 38367000-39456000 rw-p 00000000 00:00 0 > 38364000-38367000 rw-p 00363000 08:01 4334855 > /usr/local/lib/valgrind/memcheck-x86-linux > 38000000-38364000 r-xp 00000000 08:01 4334855 > /usr/local/lib/valgrind/memcheck-x86-linux > 08060000-08061000 rwxp 00000000 00:00 0 > 0805f000-08060000 rw-p 00016000 08:01 2501798 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > 0805d000-0805f000 r--p 00014000 08:01 2501798 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > 08048000-0805d000 r-xp 00000000 08:01 2501798 > /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > ... [other libraries] ... > > Is there any way this could still be an issue in Jikes (since the > offending address > on the stack came from Jikes)? Running strace shows some mmaping going on > right > before the first (of 3) SIGSEGVs, I'm just not sure what they're for > (presumably > valgrind since they're greater than the 0x80000000 max-address) or if they > even > precipitated the SIGSEGV: > > mmap2(0x82c1c000, 1064960, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xffffffff82c1c000 > mprotect(0x82c1c000, 8192, PROT_NONE) = 0 > mprotect(0x82d1e000, 8192, PROT_NONE) = 0 > gettid() = 63442 > read(1028, "A", 1) = 1 > gettid() = 63442 > getpid() = 63442 > rt_sigprocmask(SIG_SETMASK, ~[ILL TRAP BUS FPE KILL SEGV STOP], NULL, 8) = > 0 > mmap2(0x8313f000, 27597024, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xffffffff8313f000 > mmap2(0x84b91000, 11007528, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xffffffff84b91000 > munmap(0x82b1c000, 1048576) = 0 > mmap2(0x8291b000, 65536, PROT_READ|PROT_WRITE|PROT_EXEC, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, 0, 0) = 0xffffffff8291b000 > --- SIGSEGV (Segmentation fault) @ 0 (0) --- > > Thanks, > -Karl- > > On 07/06/2014 04:13 AM, Robin Garner wrote: > > Hi Karl, > > > > It looks like the address clash is at 81d00000, so try making Jikes > > RVM's maxumum mappable address lower than that ? Eg > > > > target.max-mappable.address=0x80000000 > > > > > > hth, > > Robin > > > > On 06/07/14 03:29, Karl Cronburg wrote: > >> Hello, > >> > >> My name is Karl Cronburg and I am a CS graduate student at Tufts > >> University. > >> > >> I am trying to get Jikes RVM 3.1.3+hg to run under valgrind-3.10.0.SVN > >> on an x86_64 Ubuntu machine. When I run this: > >> > >> WRAP="/usr/local/bin/valgrind --smc-check=all --error-limit=no > >> --workaround-gcc296-bugs=yes --log-file=/dev/null" > >> rvm -wrap "$WRAP" -X:gc:eagerMmapSpaces=true HelloWorld > >> > >> on a development_x86_64-linux build of Jikes, Jikes reports a > >> segmentation fault coming from outside the VM's address space: > >> > >> JikesRVM: TROUBLE. Got a signal (Segmentation fault; #11) from outside > >> the VM's address space in thread 0x4350cc0. > >> JikesRVM: UNRECOVERABLE trapped signal 11 (Segmentation fault) > >> handler stack 41e84ab > >> si->si_addr 0xccccccd1 > >> cs 0x00000023 > >> ds 0x0000002b > >> es 0x0000002b > >> fs 0x00000000 > >> gs 0x0000000b > >> ss 0x0000002b > >> edi 0x04301a40 > >> esi -- PR/VP 0x620b1587 > >> ebp 0xcccccccd > >> esp -- SP 0x620b1050 > >> ebx 0x0434bff4 > >> edx 0x00019999 > >> ecx 0x00100000 > >> eax 0x04301a40 > >> eip 0x041e84ab > >> trapno 0x0000000e > >> err 0x00000004 > >> eflags 0x00000004 > >> fpregs 4355f04 > >> oldmask 0x00000000 > >> cr2 0xccccccd1 > >> fp0 0x00000000000000000000 > >> fp1 0x00000000000000000000 > >> fp2 0x00000000000000000000 > >> fp3 0x00000000000000000000 > >> fp4 0x00000000000000000000 > >> fp5 0x00000000000000000000 > >> fp6 0x00000000000000000000 > >> fp7 0x00000000000000000000 > >> JikesRVM: internal error > >> > >> I subsequently tried rearranging Jikes' heap (as hinted at in the > >> userguide: http://jikesrvm.org/Running+the+RVM) by changing > >> build/targets/x86_64-linux.properties to contain: > >> > >> target.bootimage.code.address=0x34000000 > >> target.bootimage.data.address=0x30000000 > >> target.bootimage.rmap.address=0x37000000 > >> target.max-mappable.address=0xd0000000 > >> > >> This appears to get the VM off the ground (into Java), but it crashes on > >> a hardware exception (note that I turned on some debugging statements > >> to determine the kind of exception - a null pointer exception) after a > >> failed mmap: > >> > >> mmap (81d00000, 1048576, 7, 50, -1, 0) failed with 22: ensureMapped > >> failed with errno 22 on address 0x81d00000 > >> used = 13 pgs = boot 0 pgs + immortal 0 pgs + meta 0 pgs + los 0 pgs + > >> sanity 0 pgs + non-moving 5 pgs + sm-code 0 pgs + lg-code 0 pgs + > >> nursery 8 pgs + immix 0 pgs > >> used = 0.05 Mb = boot 0.00 Mb + immortal 0.00 Mb + meta 0.00 Mb + los > >> 0.00 Mb + sanity 0.00 Mb + non-moving 0.01 Mb + sm-code 0.00 Mb + > >> lg-code 0.00 Mb + nursery 0.03 Mb + immix 0.00 Mb > >> delivering hardware exception > >> we have a thread = 0x322bb0cc > >> it's in state = 1 > >> we have exception registers = 0x322bb594 > >> > >> Delivering exception trapCode=0 > >> Exception in the primordial thread "Jikes_RBoot_Thread" while booting: > >> JikesRVM: internal error: recursive use of hardware exception registers > >> (exiting) > >> -- Stack -- > >> (0x322cb528 21110) at [0x322cb528, 0x3503fe04] > >> Lorg/jikesrvm/scheduler/RVMThread; > >> handleUncaughtException(Ljava/lang/Throwable;)V at line 4725 > >> (0x322cb574 13821) at [0x322cb574, 0x35041403] > >> Lorg/jikesrvm/runtime/RuntimeEntrypoints; > >> handleUncaughtException(Ljava/lang/Throwable;)V at line 1072 > >> at [0x322cb574, 0x35041403] > >> Lorg/jikesrvm/runtime/RuntimeEntrypoints; > >> > deliverException(Ljava/lang/Throwable;Lorg/jikesrvm/ArchitectureSpecific$Registers;)V > >> > >> > >> at line 1067 > >> (0x322cb5cc 13809) at [0x322cb5cc, 0x3502f328] > >> Lorg/jikesrvm/runtime/RuntimeEntrypoints; deliverHardwareException(II)V > >> at line 797 > >> (0x322cb5e8 1) at [0x322cb5e8, 0x3502f328] <hardware trap> > >> (0x322d3dec 21196) at [0x322d3dec, 0x350518a6] > >> Lorg/jikesrvm/scheduler/RVMThread; traceback(Ljava/lang/String;)V at > >> line 5075 > >> (0x322d3e08 7662) at [0x322d3e08, 0x34f33a5a] Lorg/jikesrvm/VM; > >> sysFail(Ljava/lang/String;)V at line 2325 > >> (0x322d3e4c 2853) at [0x322d3e4c, 0x35003af7] > >> Lorg/jikesrvm/mm/mmtk/Assert; fail(Ljava/lang/String;)V at line 41 > >> at [0x322d3e4c, 0x35003af7] Lorg/mmtk/utility/heap/Mmapper; > >> ensureMapped(Lorg/vmmagic/unboxed/Address;I)V at line 140 > >> (0x322d3e94 5557) at [0x322d3e94, 0x346fa2fe] Lorg/mmtk/policy/Space; > >> eagerlyMmapMMTkDiscontiguousSpaces()V at line 654 > >> (0x322d3eb0 982) at [0x322d3eb0, 0x346fbed5] Lorg/mmtk/policy/Space; > >> eagerlyMmapMMTkSpaces()V at line 613 > >> at [0x322d3eb0, 0x346fbed5] Lorg/mmtk/plan/Plan; > processOptions()V > >> at line 231 > >> (0x322d3ee0 1043) at [0x322d3ee0, 0x3502354f] > >> Lorg/mmtk/plan/StopTheWorld; processOptions()V at line 61 > >> (0x322d3efc 14407) at [0x322d3efc, 0x35059e2b] > >> Lorg/jikesrvm/mm/mminterface/MemoryManager; postBoot()V at line 131 > >> (0x322d3f40 7484) at [0x322d3f40, 0x3505ac7e] Lorg/jikesrvm/VM; > >> finishBooting()V at line 202 > >> (0x322d3f58 7483) at [0x322d3f58, 0x08050406] Lorg/jikesrvm/VM; > >> boot()V at line 147 > >> > >> Any ideas on how I should arrange the heap? When I pause the program > >> using vgdb in valgrind, I get the following memory map in > /proc/PID/maps. > >> > >> 04000000-04020000 r-xp 00000000 08:01 1442022 > >> /lib/i386-linux-gnu/ld-2.15.so > >> 04020000-04021000 r--p 0001f000 08:01 1442022 > >> /lib/i386-linux-gnu/ld-2.15.so > >> 04021000-04022000 rw-p 00020000 08:01 1442022 > >> /lib/i386-linux-gnu/ld-2.15.so > >> 04022000-04024000 rw-p 00000000 00:00 0 > >> 04024000-04025000 r-xp 00000000 08:01 4334750 > >> /usr/local/lib/valgrind/vgpreload_core-x86-linux.so > >> 04025000-04026000 r--p 00000000 08:01 4334750 > >> /usr/local/lib/valgrind/vgpreload_core-x86-linux.so > >> 04026000-04027000 rw-p 00001000 08:01 4334750 > >> /usr/local/lib/valgrind/vgpreload_core-x86-linux.so > >> 04027000-04035000 r-xp 00000000 08:01 4334857 > >> /usr/local/lib/valgrind/vgpreload_memcheck-x86-linux.so > >> 04035000-04036000 r--p 0000d000 08:01 4334857 > >> /usr/local/lib/valgrind/vgpreload_memcheck-x86-linux.so > >> 04036000-04037000 rw-p 0000e000 08:01 4334857 > >> /usr/local/lib/valgrind/vgpreload_memcheck-x86-linux.so > >> 04049000-04050000 r-xp 00000000 08:01 1442023 > >> /lib/i386-linux-gnu/librt-2.15.so > >> 04050000-04051000 r--p 00006000 08:01 1442023 > >> /lib/i386-linux-gnu/librt-2.15.so > >> 04051000-04052000 rw-p 00007000 08:01 1442023 > >> /lib/i386-linux-gnu/librt-2.15.so > >> 04052000-04053000 rw-p 00000000 00:00 0 > >> 04053000-0406a000 r-xp 00000000 08:01 1442021 > >> /lib/i386-linux-gnu/libpthread-2.15.so > >> 0406a000-0406b000 r--p 00016000 08:01 1442021 > >> /lib/i386-linux-gnu/libpthread-2.15.so > >> 0406b000-0406c000 rw-p 00017000 08:01 1442021 > >> /lib/i386-linux-gnu/libpthread-2.15.so > >> 0406c000-0406e000 rw-p 00000000 00:00 0 > >> 0406e000-04071000 r-xp 00000000 08:01 1442031 > >> /lib/i386-linux-gnu/libdl-2.15.so > >> 04071000-04072000 r--p 00002000 08:01 1442031 > >> /lib/i386-linux-gnu/libdl-2.15.so > >> 04072000-04073000 rw-p 00003000 08:01 1442031 > >> /lib/i386-linux-gnu/libdl-2.15.so > >> 04073000-04074000 r-xp 00000000 08:01 2637317 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/librvm.so > >> 04074000-04075000 r--p 00000000 08:01 2637317 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/librvm.so > >> 04075000-04076000 rw-p 00001000 08:01 2637317 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/librvm.so > >> 04076000-0414e000 r-xp 00000000 08:01 4070234 > >> /usr/lib32/libstdc++.so.6.0.16 > >> 0414e000-0414f000 ---p 000d8000 08:01 4070234 > >> /usr/lib32/libstdc++.so.6.0.16 > >> 0414f000-04153000 r--p 000d8000 08:01 4070234 > >> /usr/lib32/libstdc++.so.6.0.16 > >> 04153000-04154000 rw-p 000dc000 08:01 4070234 > >> /usr/lib32/libstdc++.so.6.0.16 > >> 04154000-0415b000 rw-p 00000000 00:00 0 > >> 0415b000-04185000 r-xp 00000000 08:01 1442027 > >> /lib/i386-linux-gnu/libm-2.15.so > >> 04185000-04186000 r--p 00029000 08:01 1442027 > >> /lib/i386-linux-gnu/libm-2.15.so > >> 04186000-04187000 rw-p 0002a000 08:01 1442027 > >> /lib/i386-linux-gnu/libm-2.15.so > >> 04187000-04188000 rw-p 00000000 00:00 0 > >> 04188000-041a4000 r-xp 00000000 08:01 1442000 > >> /lib/i386-linux-gnu/libgcc_s.so.1 > >> 041a4000-041a5000 r--p 0001b000 08:01 1442000 > >> /lib/i386-linux-gnu/libgcc_s.so.1 > >> 041a5000-041a6000 rw-p 0001c000 08:01 1442000 > >> /lib/i386-linux-gnu/libgcc_s.so.1 > >> 041a6000-0434a000 r-xp 00000000 08:01 1442032 > >> /lib/i386-linux-gnu/libc-2.15.so > >> 0434a000-0434c000 r--p 001a4000 08:01 1442032 > >> /lib/i386-linux-gnu/libc-2.15.so > >> 0434c000-0434d000 rw-p 001a6000 08:01 1442032 > >> /lib/i386-linux-gnu/libc-2.15.so > >> 0434d000-04352000 rw-p 00000000 00:00 0 > >> 04352000-04752000 rwxp 00000000 00:00 0 > >> 08048000-0805d000 r-xp 00000000 08:01 2637316 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > >> 0805d000-0805f000 r--p 00014000 08:01 2637316 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > >> 0805f000-08060000 rw-p 00016000 08:01 2637316 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/JikesRVM > >> 08060000-08061000 rwxp 00000000 00:00 0 > >> 30000000-3233b000 rwxp 00000000 08:01 2622283 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.data.image > >> 34000000-35061000 rwxp 00000000 08:01 2622281 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.code.image > >> 37000000-37056000 r--p 00000000 08:01 2622285 > >> /home/karl/r/jikesrvm/dist/development_x86_64-linux/RVM.rmap.image > >> 38000000-38364000 r-xp 00000000 08:01 4334855 > >> /usr/local/lib/valgrind/memcheck-x86-linux > >> 38364000-38367000 rw-p 00363000 08:01 4334855 > >> /usr/local/lib/valgrind/memcheck-x86-linux > >> 38367000-39456000 rw-p 00000000 00:00 0 > >> 81c7b000-8270e000 rwxp 00000000 00:00 0 > >> 8270e000-8270f000 rw-s 00000000 08:01 2754811 > >> /tmp/vgdb-pipe-shared-mem-vgdb-4005-by-karl-on-??? > >> 8270f000-82773000 rwxp 00000000 00:00 0 > >> 827f6000-82a0f000 rwxp 00000000 00:00 0 > >> 82a0f000-82a11000 ---p 00000000 00:00 0 > >> 82a11000-82b11000 rwxp 00000000 00:00 0 > >> [stack:4005] > >> 82b11000-82b13000 ---p 00000000 00:00 0 > >> 82c04000-8571d000 rwxp 00000000 00:00 0 > >> 85a12000-85c11000 rwxp 00000000 00:00 0 > >> fe8f2000-fe8f4000 rw-p 00000000 00:00 0 > >> ff8d3000-ff8f5000 rw-p 00000000 00:00 0 > >> > >> I've tried a few other memory arrangements and it has only ever resulted > >> in one of the two errors just described (external segmentation > >> fault, or mmap failed) or the RVM just hangs. > >> > >> Googling around I've found various posts / emails about getting Jikes to > >> run under Valgrind, as well as how the address space layout of the > RVM > >> has been arbitrarily re-positioned over time to avoid libraries > >> (http://sourceforge.net/p/jikesrvm/mailman/message/29535725/). > >> > >> Thanks for your time, > >> -Karl Cronburg- > >> > >> > >> > >> > ------------------------------------------------------------------------------ > >> Open source business process management suite built on Java and Eclipse > >> Turn processes into business applications with Bonita BPM Community > Edition > >> Quickly connect people, data, and systems into organized workflows > >> Winner of BOSSIE, CODIE, OW2 and Gartner awards > >> http://p.sf.net/sfu/Bonitasoft > >> > >> > >> > >> _______________________________________________ > >> Jikesrvm-researchers mailing list > >> [email protected] > >> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers > >> > > > > > > > ------------------------------------------------------------------------------ > > Open source business process management suite built on Java and Eclipse > > Turn processes into business applications with Bonita BPM Community > Edition > > Quickly connect people, data, and systems into organized workflows > > Winner of BOSSIE, CODIE, OW2 and Gartner awards > > http://p.sf.net/sfu/Bonitasoft > > _______________________________________________ > > Jikesrvm-researchers mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers > > > > > > > > ------------------------------------------------------------------------------ > Open source business process management suite built on Java and Eclipse > Turn processes into business applications with Bonita BPM Community Edition > Quickly connect people, data, and systems into organized workflows > Winner of BOSSIE, CODIE, OW2 and Gartner awards > http://p.sf.net/sfu/Bonitasoft > _______________________________________________ > Jikesrvm-researchers mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers > -- Samuel Z. Guyer Associate Professor Dept of Computer Science Tufts University ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ Jikesrvm-researchers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers