[pypy-issue] Issue #2195: JIT Crash in ExtendedShortPreambleBuilder.add_preamble_op (pypy/pypy)

Tobias Pape issues-reply at bitbucket.org
Wed Nov 25 06:03:33 EST 2015


New issue 2195: JIT Crash in ExtendedShortPreambleBuilder.add_preamble_op
https://bitbucket.org/pypy/pypy/issues/2195/jit-crash-in

Tobias Pape:

I get a segfault for [this version of pycket](https://github.com/samth/pycket/tree/3a8dc0745e87b8e5b928420de0abbb52a53e1bb5) with [this benchmark](https://bitbucket.org/krono/lamb-bench/src/9a45c63556b8e19c81add18cde0f232303ef98ff/compare/racket/racket_append.scm?at=default&fileviewer=file-view-default) as soon as the JIT kicks in.

Reproduce with:

 1. Build [pycket (shapes branch)](https://github.com/samth/pycket/tree/3a8dc0745e87b8e5b928420de0abbb52a53e1bb5)
 2. Get [benchmark](https://bitbucket.org/krono/lamb-bench/src/9a45c63556b8e19c81add18cde0f232303ef98ff/compare/racket/racket_append.scm)
 3. Get [auxiliary file](https://bitbucket.org/krono/lamb-bench/src/51b8f04d37d3bb0ee69eac4234c44525e6629bef/compare/racket/cons-emulation.rktl) (put in same directory as 2.)
 4. run ` ./pycket-c racket_append.scm 2000`  (make sure jit kicks in, maybe increase number

LLDB traceback et al:.
```
Process 80422 launched: '/Users/tobias/dev/pypy/pycket/pycket-c' (x86_64)
Invalid RPython operation (NULL ptr or bad array index)
Process 80422 stopped
* thread #1: tid = 0xf6a532, 0x00007fff8ef20866 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x00007fff8ef20866 libsystem_kernel.dylib`__pthread_kill + 10
libsystem_kernel.dylib`__pthread_kill + 10:
-> 0x7fff8ef20866:  jae    0x7fff8ef20870            ; __pthread_kill + 20
   0x7fff8ef20868:  movq   %rax, %rdi
   0x7fff8ef2086b:  jmp    0x7fff8ef1d175            ; cerror_nocancel
   0x7fff8ef20870:  retq   
(lldb) bt
* thread #1: tid = 0xf6a532, 0x00007fff8ef20866 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0x00007fff8ef20866 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x00007fff8a6bf35c libsystem_pthread.dylib`pthread_kill + 92
    frame #2: 0x00007fff88de9b1a libsystem_c.dylib`abort + 125
    frame #3: 0x00000001007f98f9 pycket-c`RPyAbort + 41 at support.c:26
    frame #4: 0x000000010054a21b pycket-c`pypy_g_ExtendedShortPreambleBuilder_add_preamble_op(l_self_3748=<unavailable>, l_preamble_op_13=<unavailable>) + 523 at rpython_jit_metainterp_optimizeopt_shortpreamble.c:7915
    frame #5: 0x0000000100508593 pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 1283 at rpython_jit_metainterp_optimizeopt_optimizer.c:5195
    frame #6: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #7: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #8: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #9: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #10: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #11: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #12: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #13: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #14: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #15: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #16: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #17: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #18: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #19: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #20: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #21: 0x00000001004e5093 pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 531 at rpython_jit_metainterp_optimizeopt_info.c:7005
    frame #22: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #23: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #24: 0x00000001004e512d pycket-c`pypy_g_AbstractStructPtrInfo__force_elements(l_self_3857=<unavailable>, l_op_737=<unavailable>, l_optforce_21=<unavailable>, l_descr_806=<unavailable>) + 685 at rpython_jit_metainterp_optimizeopt_info.c:7729
    frame #25: 0x00000001004e041c pycket-c`pypy_g_AbstractVirtualPtrInfo_force_box(l_self_3745=<unavailable>, l_op_717=<unavailable>, l_optforce_17=<unavailable>) + 2604 at rpython_jit_metainterp_optimizeopt_info.c:616
    frame #26: 0x00000001005083de pycket-c`pypy_g_Optimizer_force_box(l_self_3682=<unavailable>, l_op_247=<unavailable>, l_optforce_26=<unavailable>) + 846 at rpython_jit_metainterp_optimizeopt_optimizer.c:4920
    frame #27: 0x00000001004ca854 pycket-c`pypy_g_OptEarlyForce_propagate_forward(l_self_3954=<unavailable>, l_op_666=<unavailable>) + 596 at rpython_jit_metainterp_optimizeopt_earlyforce.c:264
    frame #28: 0x0000000100517fbe pycket-c`pypy_g_OptPure_optimize_default(l_self_6167=<unavailable>, l_v635423=<unavailable>) + 1198 at rpython_jit_metainterp_optimizeopt_pure.c:3196
    frame #29: 0x0000000100568f07 pycket-c`pypy_g_dispatch_optimize___star_0_3(l_self_6298=0x0000000102a9c260, l_op_1129=0x0000000102ac1308) + 183 at rpython_jit_metainterp_optimizeopt_util.c:4827
    frame #30: 0x0000000100516409 pycket-c`pypy_g_OptPure_propagate_forward(l_self_3957=<unavailable>, l_op_318=<unavailable>) + 9 at rpython_jit_metainterp_optimizeopt_pure.c:1497
    frame #31: 0x0000000100569b04 pycket-c`pypy_g_dispatch_optimize___star_0_4(l_self_6299=<unavailable>, l_op_1131=<unavailable>) + 2180 at rpython_jit_metainterp_optimizeopt_util.c:5773
    frame #32: 0x000000010059d0c9 pycket-c`pypy_g_OptString_propagate_forward(l_self_3959=<unavailable>, l_op_319=<unavailable>) + 9 at rpython_jit_metainterp_optimizeopt_vstring.c:4191
    frame #33: 0x000000010056742d pycket-c`pypy_g_dispatch_optimize___star_0_2(l_self_3961=<unavailable>, l_op_1126=<unavailable>) + 893 at rpython_jit_metainterp_optimizeopt_util.c:4548
    frame #34: 0x000000010056a4f1 pycket-c`pypy_g_dispatch_optimize___star_0_5(l_self_6300=<unavailable>, l_op_1133=<unavailable>) + 689 at rpython_jit_metainterp_optimizeopt_util.c:8080
    frame #35: 0x000000010051ee28 pycket-c`pypy_g_OptRewrite_propagate_forward(l_self_3963=<unavailable>, l_op_985=<unavailable>) + 248 at rpython_jit_metainterp_optimizeopt_rewrite.c:290
    frame #36: 0x000000010056ca7d pycket-c`pypy_g_dispatch_optimize___star_0_6(l_self_6301=<unavailable>, l_op_1135=0x0000000102ac1308) + 1149 at rpython_jit_metainterp_optimizeopt_util.c:9838
    frame #37: 0x00000001004f2069 pycket-c`pypy_g_OptIntBounds_propagate_forward(l_self_3965=<unavailable>, l_op_322=<unavailable>) + 9 at rpython_jit_metainterp_optimizeopt_intbounds.c:18
    frame #38: 0x000000010055a41a pycket-c`pypy_g_UnrollOptimizer_jump_to_preamble(l_self_6276=<unavailable>, l_cell_token_0=<unavailable>, l_jump_op_11=<unavailable>, l_info_126=<unavailable>) + 938 at rpython_jit_metainterp_optimizeopt_unroll.c:16125
    frame #39: 0x0000000100557b51 pycket-c`pypy_g_UnrollOptimizer_optimize_peeled_loop(l_self_6268=<unavailable>, l_start_label_6=<unavailable>, l_end_jump_1=<unavailable>, l_ops_12=<unavailable>, l_state_34=<unavailable>, l_call_pure_results_10=<unavailable>, l_inline_short_preamble_3=<unavailable>) + 11841 at rpython_jit_metainterp_optimizeopt_unroll.c:5275
    frame #40: 0x0000000100479502 pycket-c`pypy_g_UnrolledLoopData_optimize(l_self_3602=<unavailable>, l_jitdriver_sd_151=<unavailable>, l_optimizations_7=<unavailable>, l_unroll_1=<unavailable>) + 1218 at rpython_jit_metainterp_compile.c:25035
    frame #41: 0x00000001004bbd8c pycket-c`pypy_g_optimize_trace(l_jitdriver_sd_155=0x000000010095b8e0, l_compile_data_1=<unavailable>, l_memo_27=<unavailable>) + 1276 at rpython_jit_metainterp_optimizeopt___init__.c:220
    frame #42: 0x000000010046f2f4 pycket-c`pypy_g_compile_loop(l_metainterp_289=<unavailable>, l_greenkey_146=<unavailable>, l_start_173=<unavailable>, l_inputargs_35=<unavailable>, l_jumpargs_3=<unavailable>, l_full_preamble_needed_0=<unavailable>, l_try_disabling_unroll_1=<unavailable>) + 6004 at rpython_jit_metainterp_compile.c:8868
    frame #43: 0x0000000100603d8c pycket-c`pypy_g_MetaInterp_compile_loop(l_self_6851=<unavailable>, l_original_boxes_157=<unavailable>, l_live_arg_boxes_5=<unavailable>, l_start_178=0, l_try_disabling_unroll_2=false, l_exported_state_5=<unavailable>) + 4604 at rpython_jit_metainterp_pyjitpl_1.c:49279
    frame #44: 0x00000001005e76e6 pycket-c`pypy_g_MetaInterp_reached_loop_header(l_self_6805=<unavailable>, l_greenboxes_7=<unavailable>, l_redboxes_5=<unavailable>) + 2134 at rpython_jit_metainterp_pyjitpl_1.c:28638
    frame #45: 0x00000001005e6405 pycket-c`pypy_g_MIFrame_opimpl_jit_merge_point(l_self_6719=<unavailable>, l_jdindex_8=<unavailable>, l_greenboxes_5=<unavailable>, l_jcposition_1=14, l_redboxes_3=<unavailable>, l_orgpc_16=6) + 1877 at rpython_jit_metainterp_pyjitpl_1.c:5083
    frame #46: 0x00000001005bfa55 pycket-c`pypy_g_MIFrame_run_one_step(l_self_6490=<unavailable>) + 197 at rpython_jit_metainterp_pyjitpl.c:28198
    frame #47: 0x00000001005bbe45 pycket-c`pypy_g_MetaInterp__interpret(l_self_6472=<unavailable>) + 149 at rpython_jit_metainterp_pyjitpl.c:21537
    frame #48: 0x00000001005b88e9 pycket-c`pypy_g_MetaInterp_interpret(l_self_1355=<unavailable>) + 9 at rpython_jit_metainterp_pyjitpl.c:16594
    frame #49: 0x00000001005aff01 pycket-c`pypy_g_MetaInterp__compile_and_run_once(l_self_6437=<unavailable>, l_original_boxes_79=<unavailable>) + 2481 at rpython_jit_metainterp_pyjitpl.c:12529
    frame #50: 0x00000001005af1f7 pycket-c`pypy_g_compile_and_run_once___rpython_jit_metainterp_ji(l_self_6421=<unavailable>, l_v715145=<unavailable>, l_v715146=<unavailable>, l_v715147=<unavailable>, l_v715148=<unavailable>, l_v715149=<unavailable>) + 1623 at rpython_jit_metainterp_pyjitpl.c:1942
    frame #51: 0x000000010065a093 pycket-c`pypy_g_bound_reached__star_5(l_hash_2636=<unavailable>, l_cell_96=<unavailable>, l_stararg0_3789=<unavailable>, l_stararg1_3810=<unavailable>, l_stararg2_3078=<unavailable>, l_stararg3_1172=<unavailable>, l_stararg4_319=0x000000010290c100) + 1075 at rpython_jit_metainterp_warmstate.c:17890
    frame #52: 0x00000001006593e5 pycket-c`pypy_g_maybe_compile_and_run__star_5(l_increment_threshold_15=<unavailable>, l_v796680=<unavailable>, l_v796681=<unavailable>, l_v796682=<unavailable>, l_v796683=<unavailable>, l_v796684=<unavailable>) + 581 at rpython_jit_metainterp_warmstate.c:1203
    frame #53: 0x00000001000f0216 pycket-c`pypy_g_portal(l_ast_19=<unavailable>, l_ast_3=<unavailable>, l_env_shapes_0=<unavailable>, l_env_362=<unavailable>, l_cont_261=<unavailable>) + 1254 at pycket_interpreter_1.c:21386
    frame #54: 0x000000010064a3a4 pycket-c`pypy_g_ll_portal_runner__pycket_AST_ASTPtr_pycket_AST_A(l_stararg0_3774=<unavailable>, l_stararg1_3795=<unavailable>, l_stararg2_3063=<unavailable>, l_stararg3_1157=<unavailable>, l_stararg4_307=<unavailable>) + 532 at rpython_jit_metainterp_warmspot.c:1255
    frame #55: 0x00000001000bcf7f pycket-c`pypy_g_interpret_one(l_ast_5=<unavailable>, l_env_5=<unavailable>) + 559 at pycket_interpreter.c:17602
    frame #56: 0x00000001000bc615 pycket-c`pypy_g_Module__interpret_mod(l_self_4596=<unavailable>, l_env_340=<unavailable>) + 2501 at pycket_interpreter.c:5235
    frame #57: 0x00000001000bbb3c pycket-c`pypy_g_interpret_module(l_self_4592=<unavailable>, l_env_339=<unavailable>) + 252 at pycket_interpreter.c:1099
    frame #58: 0x000000010008daf8 pycket-c`pypy_g_actual_entry(l_argv_1=<unavailable>) + 3992 at pycket_entry_point.c:1409
    frame #59: 0x000000010008c7e4 pycket-c`pypy_g_entry_point(l_argv_4=<unavailable>) + 36 at pycket_entry_point.c:48
    frame #60: 0x00000001007f9533 pycket-c`pypy_main_function(argc=<unavailable>, argv=<unavailable>) + 115 at entrypoint.c:74
    frame #61: 0x0000000100001294 pycket-c`start + 52
(lldb) u
Ambiguous command 'u'. Possible matches:
	undisplay
	up
(lldb) up
frame #1: 0x00007fff8a6bf35c libsystem_pthread.dylib`pthread_kill + 92
libsystem_pthread.dylib`pthread_kill + 92:
-> 0x7fff8a6bf35c:  cmpl   $-0x1, %eax
   0x7fff8a6bf35f:  jne    0x7fff8a6bf368            ; pthread_kill + 104
   0x7fff8a6bf361:  callq  0x7fff8a6c2fe4            ; symbol stub for: __error
   0x7fff8a6bf366:  movl   (%rax), %eax
(lldb) 
frame #2: 0x00007fff88de9b1a libsystem_c.dylib`abort + 125
libsystem_c.dylib`abort + 125:
-> 0x7fff88de9b1a:  movl   $0x2710, %edi
   0x7fff88de9b1f:  callq  0x7fff88e0e924            ; symbol stub for: usleep$NOCANCEL
   0x7fff88de9b24:  callq  0x7fff88de9b29            ; __abort

libsystem_c.dylib`__abort:
   0x7fff88de9b29:  pushq  %rbp
(lldb) 
frame #3: 0x00000001007f98f9 pycket-c`RPyAbort + 41 at support.c:26
   23  	RPY_EXTERN
   24  	void RPyAbort(void) {
   25  	  fprintf(stderr, "Invalid RPython operation (NULL ptr or bad array index)\n");
-> 26  	  abort();
   27  	}
(lldb) 
frame #4: 0x000000010054a21b pycket-c`pypy_g_ExtendedShortPreambleBuilder_add_preamble_op(l_self_3748=<unavailable>, l_preamble_op_13=<unavailable>) + 523 at rpython_jit_metainterp_optimizeopt_shortpreamble.c:7915
   7912	    block3:
   7913		l_v661528 = RPyField(l_self_6251, espb_inst_label_args);
   7914		l_v661531 = (struct pypy_object0 *)l_op_1084;
-> 7915		l_v661530 = RPyField(l_v661528, l_length);
   7916		OP_INT_ADD(l_v661530, 1L, l_v661529);
   7917		l_v661548 = RPyField(l_v661528, l_items);
   7918		l_v661549 = l_v661548->length;
```




More information about the pypy-issue mailing list