jerryscript-project / jerryscript

Ultra-lightweight JavaScript engine for the Internet of Things.
https://jerryscript.net
Apache License 2.0
6.92k stars 669 forks source link

Assertion 'ret_value == ecma_make_empty_completion_value ()' failed in ecma_builtin_json_stringify #526

Closed renatahodovan closed 9 years ago

renatahodovan commented 9 years ago
Jerry version:
Checked revision: 24c16da
Build: debug.linux
OS:
Ubuntu 15.04, x86_64
Test case:
Number.prototype.toString = [];
Number.prototype.valueOf = {};
JSON.stringify([], [ new Number(2.2) ]);
Backtrace:
ICE: Assertion 'ret_value == ecma_make_empty_completion_value ()' failed at jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-json.cpp(ecma_builtin_json_stringify):1166.
Error: ERR_FAILED_INTERNAL_ASSERTION

Program received signal SIGABRT, Aborted.
0x00000000004a6cc7 in syscall_2_asm () at jerryscript/jerry-libc/target/linux/jerry-asm.S:32
32    SYSCALL_2
(gdb) bt
#0  0x00000000004a6cc7 in syscall_2_asm () at jerryscript/jerry-libc/target/linux/jerry-asm.S:32
#1  0x00000000004003c2 in syscall_2 (syscall_no=62, arg1=1056, arg2=6) at jerryscript/jerry-libc/target/linux/jerry-libc-target.c:96
#2  0x0000000000400563 in abort () at jerryscript/jerry-libc/target/linux/jerry-libc-target.c:175
#3  0x000000000043ba24 in jerry_fatal(jerry_fatal_code_t) (code=ERR_FAILED_INTERNAL_ASSERTION)
    at jerryscript/jerry-core/jrt/jrt-fatals.cpp:65
#4  0x000000000043ba73 in jerry_assert_fail(char const*, char const*, char const*, unsigned int) (
    assertion=0x4c0fc8 "ret_value == ecma_make_empty_completion_value ()", 
    file=0x4c13f0 "jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-json.cpp", 
    function=0x4aa390 <_ZZL27ecma_builtin_json_stringifyjjjjE8__func__.lto_priv.812> "ecma_builtin_json_stringify", line=1166)
    at jerryscript/jerry-core/jrt/jrt-fatals.cpp:92
#5  0x0000000000479921 in ecma_builtin_json_stringify (this_arg=375, arg1=419, arg2=439, arg3=4)
    at jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-json.cpp:1164
#6  0x00000000004773ab in ecma_builtin_json_dispatch_routine (builtin_routine_id=46, this_arg_value=375, 
    arguments_list=0x81ab90 <_ZL13mem_heap_area.lto_priv.1103+262032>, arguments_number=2)
    at jerryscript/jerry-core/ecma/builtin-objects/ecma-builtin-json.inc.h:47
#7  0x000000000049ae43 in ecma_builtin_dispatch_routine (builtin_object_id=ECMA_BUILTIN_ID_JSON, builtin_routine_id=46, this_arg_value=375, 
    arguments_list=0x81ab90 <_ZL13mem_heap_area.lto_priv.1103+262032>, arguments_number=2)
    at jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.inc.h:135
#8  0x000000000049a444 in ecma_builtin_dispatch_call (obj_p=0x7daf10 <_ZL13mem_heap_area.lto_priv.1103+784>, this_arg_value=375, 
    arguments_list_p=0x81ab90 <_ZL13mem_heap_area.lto_priv.1103+262032>, arguments_list_len=2)
    at jerryscript/jerry-core/ecma/builtin-objects/ecma-builtins.cpp:414
#9  0x00000000004508ae in ecma_op_function_call (func_obj_p=0x7daf10 <_ZL13mem_heap_area.lto_priv.1103+784>, this_arg_value=375, 
    arguments_list_p=0x81ab90 <_ZL13mem_heap_area.lto_priv.1103+262032>, arguments_list_len=2)
    at jerryscript/jerry-core/ecma/operations/ecma-function-object.cpp:788
#10 0x0000000000431d8a in opfunc_call_n (instr=..., frame_ctx_p=0x7fffffffd550) at jerryscript/jerry-core/vm/opcodes.cpp:842
#11 0x00000000004a399d in vm_loop (frame_ctx_p=0x7fffffffd550, run_scope_p=0x0) at jerryscript/jerry-core/vm/vm.cpp:484
#12 0x00000000004a3c2a in vm_run_from_pos (instrs_p=0x7dad98 <_ZL13mem_heap_area.lto_priv.1103+408>, start_pos=1, this_binding_value=23, 
    lex_env_p=0x7dac38 <_ZL13mem_heap_area.lto_priv.1103+56>, is_strict=false, is_eval_code=false) at jerryscript/jerry-core/vm/vm.cpp:574
#13 0x00000000004a3807 in vm_run_global () at jerryscript/jerry-core/vm/vm.cpp:413
#14 0x00000000004a602c in jerry_run () at jerryscript/jerry-core/jerry.cpp:1363
#15 0x00000000004a4c0c in main (argc=3, argv=0x7fffffffd918) at jerryscript/main-linux.cpp:295
rtakacs commented 9 years ago

549 fixes this issue. We can close this.