New submission from Hubert Hesse <[email protected]>:

Hello,
we are building an stm-enabled lang-smalltalk (see bitbucket's stmgc-c7 branch
in lang-smalltalk) with the pypy commit 4169f1423e3d (on pypy's stmgc-c7 
branch). 

We have encountered a KeyError in the bridge optimization of the JIT in several
parts of the code. We assume a common root cause.

First, we encountered this error:

Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
##################RPython traceback:
  File "spyvm_interpreter.c", line 22899, in Interpreter_c_loop_stm
  File "rpython_jit_metainterp_warmstate.c", line 499, in
maybe_compile_and_run__star_4
  File "rpython_jit_metainterp_warmstate.c", line 830, in 
execute_assembler__star_1
  File "rpython_jit_metainterp_compile.c", line 11956, in
ResumeGuardDescr_handle_fail
  File "rpython_jit_metainterp_compile.c", line 12646, in
ResumeGuardDescr__trace_and_compile_from_bridge
  File "rpython_jit_metainterp_pyjitpl.c", line 55090, in
MetaInterp_handle_guard_failure
  File "rpython_jit_metainterp_pyjitpl.c", line 55606, in
MetaInterp__handle_guard_failure
  File "rpython_jit_metainterp_pyjitpl.c", line 1475, in MetaInterp_interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 2516, in MetaInterp__interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 3686, in MIFrame_run_one_step
  File "rpython_jit_metainterp_pyjitpl.c", line 26298, in
MIFrame_opimpl_jit_merge_point
  File "rpython_jit_metainterp_pyjitpl.c", line 38787, in
MetaInterp_reached_loop_header
  File "rpython_jit_metainterp_pyjitpl.c", line 48282, in 
MetaInterp_compile_loop
  File "rpython_jit_metainterp_compile.c", line 7021, in compile_retrace
  File "rpython_jit_metainterp_optimizeopt___init__.c", line 196, in 
optimize_trace
  File "rpython_jit_metainterp_optimizeopt_unroll.c", line 11521, in
UnrollOptimizer_close_loop
  File "rpython_jit_metainterp_optimizeopt_unroll.c", line 13907, in
UnrollOptimizer__import_op
  File "rpython_jit_metainterp_optimizeopt_unroll.c", line 14971, in
UnrollOptimizer_import_box
  File "rpython_rtyper_lltypesystem_rdict.c", line 23396, in
ll_dict_getitem__dicttablePtr_objectPtr_2
~~~ Crash in JIT! <KeyError object at 0x61c02e0>

then we applied the following changes:
--- a/rpython/jit/metainterp/optimizeopt/unroll.py      Wed May 07 14:33:16 2014
+0200
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py      Mon May 12 13:43:43 2014
+0200
@@ -481,6 +481,8 @@
         if box in self.boxes_created_this_iteration:
             return
 
+        if not self.short_boxes.has_producer(box):
+            return
         short_op = self.short_boxes.producer(box)
         newresult = self.add_op_to_short(short_op)

Next we saw another error through the bridge optimization:
###########################RPython traceback:
  File "spyvm_interpreter.c", line 22892, in Interpreter_c_loop_stm
  File "rpython_jit_metainterp_warmstate.c", line 499, in
maybe_compile_and_run__star_4
  File "rpython_jit_metainterp_warmstate.c", line 830, in 
execute_assembler__star_1
  File "rpython_jit_metainterp_compile.c", line 11951, in
ResumeGuardDescr_handle_fail
  File "rpython_jit_metainterp_compile.c", line 12641, in
ResumeGuardDescr__trace_and_compile_from_bridge
  File "rpython_jit_metainterp_pyjitpl.c", line 55085, in
MetaInterp_handle_guard_failure
  File "rpython_jit_metainterp_pyjitpl.c", line 55601, in
MetaInterp__handle_guard_failure
  File "rpython_jit_metainterp_pyjitpl.c", line 1475, in MetaInterp_interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 2517, in MetaInterp__interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 3687, in MIFrame_run_one_step
  File "rpython_jit_metainterp_pyjitpl.c", line 26295, in
MIFrame_opimpl_jit_merge_point
  File "rpython_jit_metainterp_pyjitpl.c", line 38783, in
MetaInterp_reached_loop_header
  File "rpython_jit_metainterp_pyjitpl.c", line 48008, in 
MetaInterp_compile_loop
  File "rpython_jit_metainterp_compile.c", line 3247, in compile_loop
  File "rpython_jit_metainterp_inliner.c", line 1004, in Inliner_inline_op
  File "rpython_jit_metainterp_inliner.c", line 1821, in Inliner_inline_snapshot
  File "rpython_jit_metainterp_inliner.c", line 1733, in Inliner_inline_snapshot
  File "rpython_rtyper_lltypesystem_rdict.c", line 23438, in
ll_dict_getitem__dicttablePtr_objectPtr_2
~~~ Crash in JIT! <KeyError object at 0x61c02e0>

After this we disabled the inliner:
@@ -154,5 +155,4 @@
         part.operations = [part.operations[-1]] + \
-                          [inliner.inline_op(h_ops[i]) for i in range(start,
len(h_ops))] + \
                           [ResOperation(rop.JUMP, [inliner.inline_arg(a) for a
in jumpargs],
                                         None, descr=jitcell_token)]
         target_token = part.operations[0].getdescr()

... we encountered a similar error in the compile loop:
###########################RPython traceback:
  File "spyvm_interpreter.c", line 3638, in portal
  File "rpython_jit_metainterp_warmstate.c", line 619, in
maybe_compile_and_run__star_4
  File "rpython_jit_metainterp_warmstate.c", line 1004, in bound_reached__star_4
  File "rpython_jit_metainterp_pyjitpl.c", line 532, in
compile_and_run_once___rpython_jit_metainterp_ji
  File "rpython_jit_metainterp_pyjitpl.c", line 1004, in
MetaInterp__compile_and_run_once
  File "rpython_jit_metainterp_pyjitpl.c", line 1475, in MetaInterp_interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 2516, in MetaInterp__interpret
  File "rpython_jit_metainterp_pyjitpl.c", line 3687, in MIFrame_run_one_step
  File "rpython_jit_metainterp_pyjitpl.c", line 26293, in
MIFrame_opimpl_jit_merge_point
  File "rpython_jit_metainterp_pyjitpl.c", line 38781, in
MetaInterp_reached_loop_header
  File "rpython_jit_metainterp_pyjitpl.c", line 48005, in 
MetaInterp_compile_loop
  File "rpython_jit_metainterp_compile.c", line 3255, in compile_loop
  File "rpython_rtyper_lltypesystem_rdict.c", line 23476, in
ll_dict_getitem__dicttablePtr_objectPtr_2
~~~ Crash in JIT! <KeyError object at 0x61c02e0>

----------
messages: 6884
nosy: hubx, pypy-issue
priority: bug
status: unread
title: stm - KeyError in JIT's bridge optimization

________________________________________
PyPy bug tracker <[email protected]>
<https://bugs.pypy.org/issue1767>
________________________________________
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue

Reply via email to