You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to racke...@googlegroups.com
hi. i'm trying to run racket (v6.1.1.8) under valgrind. (valgrind --num-callers=24 --vex-iropt-register-updates=allregs-at-each-insn --tool=memcheck --trace-children=yes /var/tmp/racket/bin/racket)
but racket segfaults when scheme_handle_stack_overflow calls scheme_longjmpup(&scheme_overflow_jmp->cont) because scheme_overflow_jmp is NULL at this moment. full backtrace (as told by valgrind):
==18730== Invalid read of size 8 ==18730== at 0x4F63897: scheme_longjmpup (setjmpup.c:633) ==18730== by 0x4CB3B06: scheme_handle_stack_overflow (eval.c:489) ==18730== by 0x4FD0A01: scheme_thread_block (thread.c:4969) ==18730== by 0x4FCEF8A: scheme_out_of_fuel (thread.c:4434) ==18730== by 0x4DFBD80: reverse_prim (list.c:1357) ==18730== by 0x4DFBB1D: scheme_reverse (list.c:1321) ==18730== by 0x4F95F04: scheme_lookup_prefab_type (struct.c:5408) ==18730== by 0x4FC2E70: scheme_init_thread_places (thread.c:632) ==18730== by 0x4C94356: place_instance_init (env.c:533) ==18730== by 0x4C938A6: scheme_engine_instance_init (env.c:305) ==18730== by 0x4C93714: scheme_basic_env (env.c:226) ==18730== by 0x406CCD: ??? (in /var/tmp/racket/bin/racket) ==18730== by 0x4071D8: ??? (in /var/tmp/racket/bin/racket) ==18730== by 0x4C4A53E: do_main_stack_setup (salloc.c:198) ==18730== by 0x4C4A5B1: scheme_main_stack_setup (salloc.c:310) ==18730== by 0x4070DD: ??? (in /var/tmp/racket/bin/racket) ==18730== by 0x4070A6: main (in /var/tmp/racket/bin/racket) ==18730== Address 0x8 is not stack'd, malloc'd or (recently) free'd ==18730== SIGSEGV MAPERR si_code 1 fault on addr 0x8
if i modify place_instance_init() to call scheme_create_overflow() after scheme_init_overflow() - things getting more worse. valgrind complaints about:
==22609== Invalid read of size 8 ==22609== at 0x501B9DB: block_cache_compact (block_cache.c:325) ==22609== by 0x501D216: mmu_should_compact_page (vm.c:191) ==22609== by 0x5027F94: do_heap_compact (newgc.c:4112) ==22609== by 0x5029BBA: garbage_collect (newgc.c:4912) ==22609== by 0x501DFDF: collect_now (newgc.c:985) ==22609== by 0x501ED08: allocate_slowpath (newgc.c:1375) ==22609== by 0x501EE82: allocate (newgc.c:1439) ==22609== by 0x501F2AF: GC_malloc_atomic (newgc.c:1557) ==22609== by 0x4F62F1D: scheme_copy_stack (setjmpup.c:298) ==22609== by 0x4F6364A: scheme_setjmpup_relative (setjmpup.c:556) ==22609== by 0x4CB3781: scheme_handle_stack_overflow (eval.c:447) ==22609== by 0x4FD0A09: scheme_thread_block (thread.c:4969) ==22609== by 0x4CE2775: scheme_really_create_overflow (fun.c:1087) ==22609== by 0x4CE2A7D: scheme_create_overflow (fun.c:1147) ==22609== by 0x4C94360: place_instance_init (env.c:534) ==22609== by 0x4C938A6: scheme_engine_instance_init (env.c:305) ==22609== by 0x4C93714: scheme_basic_env (env.c:226) ==22609== by 0x406CCD: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4071D8: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4C4A53E: do_main_stack_setup (salloc.c:198) ==22609== by 0x4C4A5B1: scheme_main_stack_setup (salloc.c:310) ==22609== by 0x4070DD: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4070A6: main (in /var/tmp/racket/bin/racket) ==22609== Address 0x5ac2290 is 8 bytes after a block of size 104 alloc'd ==22609== at 0x4A069EE: malloc (vg_replace_malloc.c:270) ==22609== by 0x501ABA2: ofm_malloc (newgc.c:335) ==22609== by 0x501ABD5: ofm_malloc_zero (newgc.c:342) ==22609== by 0x501B312: block_cache_create (block_cache.c:65) ==22609== by 0x501D038: mmu_create (vm.c:101) ==22609== by 0x5025423: NewGC_initialize (newgc.c:2942) ==22609== by 0x5025533: init_type_tags_worker (newgc.c:2976) ==22609== by 0x5025831: GC_construct_child_gc (newgc.c:3026) ==22609== by 0x5025AF2: GC_switch_out_master_gc (newgc.c:3092) ==22609== by 0x4C9388B: scheme_engine_instance_init (env.c:297) ==22609== by 0x4C93714: scheme_basic_env (env.c:226) ==22609== by 0x406CCD: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4071D8: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4C4A53E: do_main_stack_setup (salloc.c:198) ==22609== by 0x4C4A5B1: scheme_main_stack_setup (salloc.c:310) ==22609== by 0x4070DD: ??? (in /var/tmp/racket/bin/racket) ==22609== by 0x4070A6: main (in /var/tmp/racket/bin/racket)
and after that racket eats cpu and memory till killed by OOM killer. looking at strace - all that it is do - writing (and reading) all alphabet characters one by one to pipe.