Actions
Bug #20916
openPrism compiler should support ** in Ractor constant
ruby -v:
ruby 3.4.0dev (2024-11-28T02:34:20Z avoid-uninitialize.. 79ae6e72c8) +PRISM [x86_64-linux]
Description
The Prism compiler raises an exception against the following code.
$ ./miniruby -e '# shareable_constant_value: experimental_everything
C = { **{ } }'
-e:2: Ractor constant writes do not support **
-e: node type not implemented (NotImplementedError)
But the traditional compiler support it, and @ko1 (Koichi Sasada) said it should be supported.
Also, I feel that this error message node type not implemented
is a sign of a worse problem. Actually, valgrind reports Conditional jump or move depends on uninitialised value(s)
against the Prism compiler. An assertion failure is also reported.
$ valgrind ./miniruby -e '# shareable_constant_value: experimental_everything
C = { **{ } }'
==49978== Memcheck, a memory error detector
==49978== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==49978== Using Valgrind-3.22.0 and LibVEX; rerun with -h for copyright info
==49978== Command: ./miniruby -e #\ shareable_constant_value:\ experimental_everything_C\ =\ {\ **{\ }\ }
==49978==
==49978== Warning: set address range perms: large range [0x64e0000, 0x1e4e0000) (defined)
-e:2: Ractor constant writes do not support **
==49978== Conditional jump or move depends on uninitialised value(s)
==49978== at 0x4BB42A: pm_newline_list_line (pm_newline_list.c:63)
==49978== by 0x1E718A: pm_compile_shareable_constant_value (prism_compile.c:5280)
==49978== by 0x1E7243: pm_compile_shareable_constant_value (prism_compile.c:5318)
==49978== by 0x1E8DC1: pm_compile_constant_write_node.isra.0 (prism_compile.c:5372)
==49978== by 0x1DCB2F: pm_compile_node (prism_compile.c:9823)
==49978== by 0x1DC9C8: pm_compile_node (prism_compile.c:9934)
==49978== by 0x1F3AC9: pm_compile_scope_node.isra.0 (prism_compile.c:6603)
==49978== by 0x1DA66A: pm_compile_node (prism_compile.c:9805)
==49978== by 0x1F61A7: pm_iseq_compile_node (prism_compile.c:10109)
==49978== by 0x2A5303: pm_iseq_new_with_opt_try (iseq.c:1027)
==49978== by 0x23DFF2: rb_protect (eval.c:1033)
==49978== by 0x2AB198: pm_iseq_new_with_opt (iseq.c:1080)
==49978==
miniruby: prism/util/pm_newline_list.c:63: pm_newline_list_line: Assertion `cursor >= list->start' failed.
==49978==
==49978== Process terminating with default action of signal 6 (SIGABRT)
==49978== at 0x4AFAB1C: __pthread_kill_implementation (pthread_kill.c:44)
==49978== by 0x4AFAB1C: __pthread_kill_internal (pthread_kill.c:78)
==49978== by 0x4AFAB1C: pthread_kill@@GLIBC_2.34 (pthread_kill.c:89)
==49978== by 0x4AA126D: raise (raise.c:26)
==49978== by 0x4A848FE: abort (abort.c:79)
==49978== by 0x4A8481A: __assert_fail_base.cold (assert.c:94)
==49978== by 0x4A97506: __assert_fail (assert.c:103)
==49978== by 0x4BB49B: pm_newline_list_line (pm_newline_list.c:63)
==49978== by 0x1E718A: pm_compile_shareable_constant_value (prism_compile.c:5280)
==49978== by 0x1E7243: pm_compile_shareable_constant_value (prism_compile.c:5318)
==49978== by 0x1E8DC1: pm_compile_constant_write_node.isra.0 (prism_compile.c:5372)
==49978== by 0x1DCB2F: pm_compile_node (prism_compile.c:9823)
==49978== by 0x1DC9C8: pm_compile_node (prism_compile.c:9934)
==49978== by 0x1F3AC9: pm_compile_scope_node.isra.0 (prism_compile.c:6603)
==49978==
==49978== HEAP SUMMARY:
==49978== in use at exit: 2,645,494 bytes in 10,084 blocks
==49978== total heap usage: 36,662 allocs, 26,578 frees, 6,066,537 bytes allocated
==49978==
==49978== LEAK SUMMARY:
==49978== definitely lost: 0 bytes in 0 blocks
==49978== indirectly lost: 0 bytes in 0 blocks
==49978== possibly lost: 1,050,576 bytes in 4 blocks
==49978== still reachable: 1,594,918 bytes in 10,080 blocks
==49978== suppressed: 0 bytes in 0 blocks
==49978== Rerun with --leak-check=full to see details of leaked memory
==49978==
==49978== Use --track-origins=yes to see where uninitialised values come from
==49978== For lists of detected and suppressed errors, rerun with: -s
==49978== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Aborted (core dumped)
Actions
Like0
Like0Like0Like0Like0Like0