Skip to content

Instantly share code, notes, and snippets.

@dogbert17
Last active November 19, 2017 21:06
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/cebea4925ff5b5ca6759da1a183813fc to your computer and use it in GitHub Desktop.
Save dogbert17/cebea4925ff5b5ca6759da1a183813fc to your computer and use it in GitHub Desktop.
Running t/spec/S32-io/IO-Socket-INET.t on a 64 bit VM upsets ASAN
dilbert@Linux-Mint18 ~/repos/rakudo $ ./perl6 -v
This is Rakudo version 2017.10-215-g8510507 built on MoarVM version 2017.10-86-g89fae17
implementing Perl 6.c.
dilbert@Linux-Mint18 ~/repos/rakudo $ ASAN_OPTIONS=detect_leaks=0 ./perl6 t/spec/S32-io/IO-Socket-INET.t
1..26
ok 1 - echo server and client
ok 2 - discard server and client
ok 3 - received first 7 characters
ok 4 - received next 3 characters
ok 5 - remaining 26 were buffered
ok 6 - received ꀁ
ok 7 - ... which is 1 character
ok 8 - received another character
ok 9 - combined the bytes form ꀂ
ok 10 - get() with default separator
ok 11 - default separator
ok 12 - \r\n separator
ok 13 - \r was not left behind on the string
ok 14 - . as a separator
ok 15 - ! separator not at end of string
ok 16 - Multiple separators not at end of string
ok 17 - ! separator at end of string
ok 18 - first get after creation came after first set of nl-in
ok 19 - another get for good measure.
ok 20 - received first character
ok 21 - received last character
ok 22 - total amount
ok 23 - successful read binary data
ok 24 - successful received binary data
ok 25 - test moar cache by reading per byte
=================================================================
==19336==ERROR: AddressSanitizer: heap-use-after-free on address 0x617000354820 at pc 0x7f5a9eac124d bp 0x7f5a9af219b0 sp 0x7f5a9af219a0
READ of size 8 at 0x617000354820 thread T1
#0 0x7f5a9eac124c in bind_pos src/6model/reprs/VMArray.c:387
#1 0x7f5a9eaa61d7 in MVM_repr_bind_pos_o src/6model/reprconv.c:232
#2 0x7f5a9ebd4343 in MVM_spesh_stats_cleanup src/spesh/stats.c:645
#3 0x7f5a9ebcc5d6 in worker src/spesh/worker.c:13
#4 0x7f5a9ea1e359 in thread_initial_invoke src/core/threads.c:59
#5 0x7f5a9e9bda74 in MVM_interp_run src/core/interp.c:93
#6 0x7f5a9ea1e4fd in start_thread src/core/threads.c:85
#7 0x7f5a9dda26b9 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76b9)
#8 0x7f5a9e0bf3dc in clone (/lib/x86_64-linux-gnu/libc.so.6+0x1073dc)
0x617000354820 is located 32 bytes inside of 728-byte region [0x617000354800,0x617000354ad8)
freed by thread T0 here:
#0 0x7f5a9fa332ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)
#1 0x7f5a9ea55cd4 in finish_gc src/gc/orchestrate.c:210
#2 0x7f5a9ea55cd4 in run_gc src/gc/orchestrate.c:373
#3 0x7f5a9ea57741 in MVM_gc_enter_from_allocator src/gc/orchestrate.c:486
#4 0x7f5a9ea1f870 in try_join src/core/threads.c:188
#5 0x7f5a9ea1f870 in MVM_thread_join src/core/threads.c:194
#6 0x7f5a9e9e79bb in MVM_interp_run src/core/interp.c:3740
#7 0x7f5a9ec66116 in MVM_vm_run_file src/moar.c:401
#8 0x4016bb in main src/main.c:256
#9 0x7f5a9dfd882f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
previously allocated by thread T0 here:
#0 0x7f5a9fa3379a in __interceptor_calloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9879a)
#1 0x7f5a9e9f2d65 in MVM_calloc src/core/alloc.h:11
#2 0x7f5a9e9f2d65 in MVM_tc_create src/core/threadcontext.c:8
#3 0x7f5a9ea1ea09 in MVM_thread_new src/core/threads.c:29
#4 0x7f5a9e9e7a7b in MVM_interp_run src/core/interp.c:3735
#5 0x7f5a9ec66116 in MVM_vm_run_file src/moar.c:401
#6 0x4016bb in main src/main.c:256
#7 0x7f5a9dfd882f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
Thread T1 created by T0 here:
#0 0x7f5a9f9d1253 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x36253)
#1 0x7f5a9ecf5990 in uv_thread_create (//home/dilbert/repos/rakudo/nqp/MoarVM/../../install/lib/libmoar.so+0x973990)
#2 0x7f5a9ec64d0f in MVM_vm_create_instance src/moar.c:346
#3 0x401320 in main src/main.c:239
#4 0x7f5a9dfd882f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
SUMMARY: AddressSanitizer: heap-use-after-free src/6model/reprs/VMArray.c:387 bind_pos
Shadow bytes around the buggy address:
0x0c2e800628b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c2e800628c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c2e800628d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c2e800628e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c2e800628f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c2e80062900: fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd
0x0c2e80062910: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c2e80062920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c2e80062930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c2e80062940: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c2e80062950: fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa fa
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
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
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
==19336==ABORTING
dilbert@Linux-Mint18 ~/repos/rakudo $
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment