Skip to content

Instantly share code, notes, and snippets.

@dogbert17
Last active July 20, 2021 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dogbert17/3cc911045a857bf78093822612b50a24 to your computer and use it in GitHub Desktop.
Save dogbert17/3cc911045a857bf78093822612b50a24 to your computer and use it in GitHub Desktop.
Buffer overflow new-disp
dogbert@dogbert-VirtualBox:~/repos/rakudo$ ASAN_OPTIONS="detect_leaks=0" ./rakudo-gdb-m -Ilib t/spec/S32-hash/map.t
================================================================================================
This is Rakudo running in the debugger, which often allows the user to generate useful back-
traces to debug or report issues in Rakudo, the MoarVM backend or the currently running code.
This Rakudo version is 2021.06.87.geceeb.5083 built on MoarVM version 2021.06.281.g.1.db.0.f.3.bb.9,
running on linuxmint (20.Ulyana) / linux
Type `bt full` to generate a backtrace if applicable, type `q` to quit or `help` for help.
------------------------------------------------------------------------------------------------
Reading symbols from /home/dogbert/repos/rakudo/nqp/MoarVM/../../install/bin/moar...
Starting program: /home/dogbert/repos/rakudo/install/bin/moar --execname=/home/dogbert/repos/rakudo/rakudo-gdb-m --libpath=/home/dogbert/repos/rakudo --libpath=/home/dogbert/repos/rakudo/blib --libpath=/home/dogbert/repos/rakudo/install/share/nqp/lib /home/dogbert/repos/rakudo/perl6.moarvm -Ilib t/spec/S32-hash/map.t
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff2bd3700 (LWP 502984)]
1..23
ok 1 - .Map on defined Hash produces correct Map
ok 2 - .Map on undefined Hash produces Map type object
# Subtest: <object|type>.map(Hash) should die
1..2
ok 1 - code dies
ok 2 - right exception type (Exception)
ok 3 - <object|type>.map(Hash) should die
ok 4 - Map.Map returns self
ok 5 - Map:U.Hash gives Hash type object
ok 6 - .Hash on empty Map gives empty Hash
ok 7 - Map:D.Hash gives right hash
ok 8 - Map.Int gives number of pairs
ok 9 - Map{} with non-Str value in lookup stringifies it
ok 10 - Map.clone is identity
# Subtest: Map.gist shows only the first sorted 100 els
1..4
=================================================================
==502980==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6180001867ac at pc 0x7ffff75eaf2d bp 0x7fffffffb190 sp 0x7fffffffa938
WRITE of size 4 at 0x6180001867ac thread T0
#0 0x7ffff75eaf2c (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x67f2c)
#1 0x7ffff6326142 in memset /usr/include/x86_64-linux-gnu/bits/string_fortified.h:71
#2 0x7ffff6326142 in MVM_callsite_intern src/core/callsite.c:258
#3 0x7ffff65de4da in emit_resume_inits src/disp/program.c:2075
#4 0x7ffff65de4da in process_recording src/disp/program.c:2196
#5 0x7ffff65e0a13 in MVM_disp_program_record_end src/disp/program.c:2372
#6 0x7ffff63e18bf in handle_end_of_dispatch_record src/core/callstack.c:340
#7 0x7ffff63e18bf in MVM_callstack_unwind_dispatch_record src/core/callstack.c:484
#8 0x7ffff65c6991 in run_dispatch src/disp/program.c:467
#9 0x7ffff65e04bb in MVM_disp_program_record_end src/disp/program.c:2315
#10 0x7ffff63e116c in handle_end_of_dispatch_record src/core/callstack.c:340
#11 0x7ffff63e116c in MVM_callstack_unwind_frame src/core/callstack.c:449
#12 0x7ffff63c3818 in remove_one_frame src/core/frame.c:1059
#13 0x7ffff63da839 in MVM_frame_try_return src/core/frame.c:1181
#14 0x7ffff636b3f5 in MVM_interp_run src/core/interp.c:575
#15 0x555555556c3b in main src/main.c:305
#16 0x7ffff5a650b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#17 0x555555556e4d in _start (/home/dogbert/repos/rakudo/install/bin/moar+0x2e4d)
0x6180001867ac is located 0 bytes to the right of 812-byte region [0x618000186480,0x6180001867ac)
allocated by thread T0 here:
#0 0x7ffff7690bc8 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
#1 0x7ffff6416c05 in MVM_malloc src/core/alloc.h:2
#2 0x7ffff6416c05 in MVM_fixed_size_alloc src/core/fixedsizealloc.c:210
#3 0x7ffff6416c05 in MVM_fixed_size_alloc src/core/fixedsizealloc.c:186
#4 0x7ffff6417a0b in MVM_fixed_size_realloc_at_safepoint src/core/fixedsizealloc.c:260
#5 0x7ffff6326119 in MVM_callsite_intern src/core/callsite.c:254
#6 0x7ffff65de4da in emit_resume_inits src/disp/program.c:2075
#7 0x7ffff65de4da in process_recording src/disp/program.c:2196
#8 0x7ffff65e0a13 in MVM_disp_program_record_end src/disp/program.c:2372
#9 0x7ffff63e18bf in handle_end_of_dispatch_record src/core/callstack.c:340
#10 0x7ffff63e18bf in MVM_callstack_unwind_dispatch_record src/core/callstack.c:484
#11 0x7ffff65c6991 in run_dispatch src/disp/program.c:467
#12 0x7ffff65e04bb in MVM_disp_program_record_end src/disp/program.c:2315
#13 0x7ffff63e116c in handle_end_of_dispatch_record src/core/callstack.c:340
#14 0x7ffff63e116c in MVM_callstack_unwind_frame src/core/callstack.c:449
#15 0x7ffff63c3818 in remove_one_frame src/core/frame.c:1059
#16 0x7ffff63da839 in MVM_frame_try_return src/core/frame.c:1181
#17 0x7ffff636b3f5 in MVM_interp_run src/core/interp.c:575
#18 0x555555556c3b in main src/main.c:305
#19 0x7ffff5a650b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
SUMMARY: AddressSanitizer: heap-buffer-overflow (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x67f2c)
Shadow bytes around the buggy address:
0x0c3080028ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c3080028cf0: 00 00 00 00 00[04]fa fa fa fa fa fa fa fa fa fa
0x0c3080028d00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c3080028d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0c3080028d40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==502980==ABORTING
[Thread 0x7ffff589cbc0 (LWP 502980) exited]
[Inferior 1 (process 502980) exited with code 01]
(gdb)
Here's the output from valgrind:
dogbert@dogbert-VirtualBox:~/repos/rakudo$ ASAN_OPTIONS="detect_leaks=0" ./rakudo-valgrind-m -Ilib t/spec/S32-hash/map.t
================================================================================================
This is Rakudo running in valgrind, a tool for debugging and profiling programs.
Running a program in valgrind usually takes *a lot* more time than running it directly,
so please be patient.
Valgrind options can be added with MVM_VALGRIND_OPTS environment variable.
This Rakudo version is 2021.06.87.geceeb.5083 built on MoarVM version 2021.06.281.g.1.db.0.f.3.bb.9,
running on linuxmint (20.Ulyana) / linux
------------------------------------------------------------------------------------------------
==506496== Memcheck, a memory error detector
==506496== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==506496== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==506496== Command: /home/dogbert/repos/rakudo/nqp/MoarVM/../../install/bin/moar --execname=/home/dogbert/repos/rakudo/rakudo-valgrind-m --libpath=/home/dogbert/repos/rakudo --libpath=/home/dogbert/repos/rakudo/blib --libpath=/home/dogbert/repos/rakudo/install/share/nqp/lib /home/dogbert/repos/rakudo/perl6.moarvm -Ilib t/spec/S32-hash/map.t
==506496==
1..23
ok 1 - .Map on defined Hash produces correct Map
ok 2 - .Map on undefined Hash produces Map type object
# Subtest: <object|type>.map(Hash) should die
1..2
ok 1 - code dies
ok 2 - right exception type (Exception)
ok 3 - <object|type>.map(Hash) should die
ok 4 - Map.Map returns self
ok 5 - Map:U.Hash gives Hash type object
ok 6 - .Hash on empty Map gives empty Hash
ok 7 - Map:D.Hash gives right hash
ok 8 - Map.Int gives number of pairs
ok 9 - Map{} with non-Str value in lookup stringifies it
ok 10 - Map.clone is identity
# Subtest: Map.gist shows only the first sorted 100 els
1..4
==506496== Invalid write of size 1
==506496== at 0x4842909: memset (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4A46CDB: MVM_callsite_intern (callsite.c:258)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Invalid read of size 4
==506496== at 0x4A46CFD: MVM_callsite_intern (callsite.c:264)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Invalid read of size 4
==506496== at 0x4A46E37: MVM_callsite_intern (callsite.c:287)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Invalid write of size 4
==506496== at 0x4A46E3C: MVM_callsite_intern (callsite.c:287)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Invalid read of size 4
==506496== at 0x4A46BAE: MVM_callsite_intern (callsite.c:224)
==506496== by 0x4B88AC1: MVM_disp_inline_cache_transition (inline_cache.c:285)
==506496== by 0x4B92BD1: process_recording (program.c:2286)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Invalid read of size 4
==506496== at 0x4A46EA2: MVM_callsite_mark_interns (callsite.c:300)
==506496== by 0x4AE0474: MVM_gc_root_add_instance_roots_to_worklist (roots.c:150)
==506496== by 0x4AE6333: MVM_gc_collect (collect.c:115)
==506496== by 0x4ADA4D9: run_gc (orchestrate.c:443)
==506496== by 0x4ADABB3: MVM_gc_enter_from_allocator (orchestrate.c:598)
==506496== by 0x4ADB636: MVM_gc_allocate_nursery (allocation.c:37)
==506496== by 0x4ADB429: MVM_gc_allocate (allocation.h:18)
==506496== by 0x4ADB6C3: MVM_gc_allocate_zeroed (allocation.c:56)
==506496== by 0x4ADBA51: MVM_gc_allocate_object (allocation.c:93)
==506496== by 0x4B205D9: allocate (P6opaque.c:67)
==506496== by 0x4B08A2E: MVM_repr_alloc_init (reprconv.c:17)
==506496== by 0x4B0B6E7: MVM_repr_box_str (reprconv.c:672)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
ok 1 - 100 els
==506496== Invalid read of size 4
==506496== at 0x4A46BAE: MVM_callsite_intern (callsite.c:224)
==506496== by 0x4A4724C: MVM_callsite_drop_positional (callsite.c:372)
==506496== by 0x4B6AAE2: MVM_capture_drop_arg (MVMCapture.c:287)
==506496== by 0x4B8C534: MVM_disp_program_record_capture_drop_arg (program.c:923)
==506496== by 0x4B97D4F: dispatcher_drop_arg_impl (syscall.c:90)
==506496== by 0x4B94208: MVM_disp_program_run (program.c:2678)
==506496== by 0x4B8831E: dispatch_monomorphic (inline_cache.c:104)
==506496== by 0x4A840A5: MVM_interp_run (interp.c:5875)
==506496== by 0x4C2E984: MVM_vm_run_file (moar.c:513)
==506496== by 0x109C86: main (main.c:305)
==506496== Address 0x6f2cc9c is 0 bytes after a block of size 812 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Conditional jump or move depends on uninitialised value(s)
==506496== at 0x4A46BB3: MVM_callsite_intern (callsite.c:224)
==506496== by 0x4B8E51D: add_program_constant_callsite (program.c:1458)
==506496== by 0x4B928C9: process_recording (program.c:2244)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496==
==506496== Conditional jump or move depends on uninitialised value(s)
==506496== at 0x4A46D0A: MVM_callsite_intern (callsite.c:265)
==506496== by 0x4B8E51D: add_program_constant_callsite (program.c:1458)
==506496== by 0x4B928C9: process_recording (program.c:2244)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496==
==506496== Use of uninitialised value of size 8
==506496== at 0x4A46E12: MVM_callsite_intern (callsite.c:283)
==506496== by 0x4B8E51D: add_program_constant_callsite (program.c:1458)
==506496== by 0x4B928C9: process_recording (program.c:2244)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496==
==506496== Invalid read of size 4
==506496== at 0x4A46BAE: MVM_callsite_intern (callsite.c:224)
==506496== by 0x4B88CBB: MVM_disp_inline_cache_transition (inline_cache.c:316)
==506496== by 0x4B92BD1: process_recording (program.c:2286)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x6c58f64 is 0 bytes after a block of size 820 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
==506496== Conditional jump or move depends on uninitialised value(s)
==506496== at 0x4A46EFB: MVM_callsite_mark_interns (callsite.c:303)
==506496== by 0x4AE0474: MVM_gc_root_add_instance_roots_to_worklist (roots.c:150)
==506496== by 0x4AE6333: MVM_gc_collect (collect.c:115)
==506496== by 0x4ADA4D9: run_gc (orchestrate.c:443)
==506496== by 0x4ADABB3: MVM_gc_enter_from_allocator (orchestrate.c:598)
==506496== by 0x4ADB636: MVM_gc_allocate_nursery (allocation.c:37)
==506496== by 0x4ADB429: MVM_gc_allocate (allocation.h:18)
==506496== by 0x4ADB6C3: MVM_gc_allocate_zeroed (allocation.c:56)
==506496== by 0x4ADBA51: MVM_gc_allocate_object (allocation.c:93)
==506496== by 0x4A4E296: MVM_args_slurpy_named (args.c:1166)
==506496== by 0x4A5D498: MVM_interp_run (interp.c:1281)
==506496== by 0x4C2E984: MVM_vm_run_file (moar.c:513)
==506496==
ok 2 - 101 els
==506496== Invalid read of size 4
==506496== at 0x4A46BAE: MVM_callsite_intern (callsite.c:224)
==506496== by 0x4B88F93: MVM_disp_inline_cache_transition (inline_cache.c:360)
==506496== by 0x4B92BD1: process_recording (program.c:2286)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4A8E: MVM_callstack_unwind_frame (callstack.c:449)
==506496== by 0x4A9EB90: remove_one_frame (frame.c:1059)
==506496== by 0x4A9F14E: MVM_frame_try_return (frame.c:1181)
==506496== Address 0x662cd6c is 0 bytes after a block of size 828 alloc'd
==506496== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==506496== by 0x4ABFF1D: MVM_malloc (alloc.h:2)
==506496== by 0x4AC08ED: MVM_fixed_size_alloc (fixedsizealloc.c:210)
==506496== by 0x4AC0A6B: MVM_fixed_size_realloc_at_safepoint (fixedsizealloc.c:260)
==506496== by 0x4A46CA4: MVM_callsite_intern (callsite.c:254)
==506496== by 0x4B91A79: emit_resume_inits (program.c:2075)
==506496== by 0x4B9255E: process_recording (program.c:2196)
==506496== by 0x4B92F9E: MVM_disp_program_record_end (program.c:2372)
==506496== by 0x4AA448D: handle_end_of_dispatch_record (callstack.c:340)
==506496== by 0x4AA4C2C: MVM_callstack_unwind_dispatch_record (callstack.c:484)
==506496== by 0x4B8A712: run_dispatch (program.c:467)
==506496== by 0x4B92CF2: MVM_disp_program_record_end (program.c:2315)
==506496==
ok 3 - 102 els
ok 4 - 1000 els
ok 11 - Map.gist shows only the first sorted 100 els
# Subtest: Cannot bind at key of immutable Map
1..2
ok 1 - code dies
ok 2 - right exception type (X::Bind)
ok 12 - Cannot bind at key of immutable Map
# Subtest: Cannot bind at key of immutable Map, Scalar value
1..2
ok 1 - code dies
ok 2 - right exception type (X::Bind)
ok 13 - Cannot bind at key of immutable Map, Scalar value
ok 14 - cannot initialize a Map for the second time
ok 15 - did we get the pairs handled ok
ok 16 - Map does not introduce bogus Scalar containers
ok 17 - did we change the hash inside the map
ok 18 - did the .WHICH stay unchanged
ok 19 - a hash value is containerized
ok 20 - Map coercion deconts hash value
ok 21 - array attribute initializer from Hash coerced to Map
ok 22 - cannot assign to existing key
ok 23 - cannot assign to non-existing key
==506496==
==506496== HEAP SUMMARY:
==506496== in use at exit: 74,181,825 bytes in 289,413 blocks
==506496== total heap usage: 883,543 allocs, 594,130 frees, 309,484,885 bytes allocated
==506496==
==506496== LEAK SUMMARY:
==506496== definitely lost: 808 bytes in 10 blocks
==506496== indirectly lost: 1,088 bytes in 12 blocks
==506496== possibly lost: 1,920,776 bytes in 670 blocks
==506496== still reachable: 72,259,153 bytes in 288,721 blocks
==506496== suppressed: 0 bytes in 0 blocks
==506496== Rerun with --leak-check=full to see details of leaked memory
==506496==
==506496== Use --track-origins=yes to see where uninitialised values come from
==506496== For lists of detected and suppressed errors, rerun with: -s
==506496== ERROR SUMMARY: 9675 errors from 13 contexts (suppressed: 0 from 0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment