Deoptimize reason is unknown

36 views
Skip to first unread message

Yahan Lu

unread,
Mar 27, 2023, 4:43:06 AM3/27/23
to v8-dev
I am debugging https://bugs.chromium.org/p/v8/issues/detail?id=13836.
I add v8 options --trace-opt  --trace_deopt_verbose
and riscv64 output:
[optimizing 0x003f8d902749 <JSFunction nextPart (sfi = 0x3f8dc84c89)> (target TURBOFAN) - took 0.070, 3.101, 0.122 ms] [completed optimizing 0x003f8d902749 <JSFunction nextPart (sfi = 0x3f8dc84c89)> (target TURBOFAN)] [marking dependent code 0x003f8e1217c1 (0x003f8dbfc659 <SharedFunctionInfo readPackageScope>) (opt id 6) for deoptimization, reason: code dependencies] [deoptimize marked code in all contexts] [bailout (kind: deopt-lazy, reason: (unknown)): begin. deoptimizing 0x003f8d910389 <JSFunction readPackageScope (sfi = 0x3f8dbfc659)>, opt id 6, bytecode offset 13, deopt exit 27, FP to SP delta 152, caller SP 0x003ffbdde868, pc 0x003f8e123648] reading input frame readPackageScope => bytecode_offset=92, args=2, height=7, retval=0(#1); inputs: 0: 0x003f8d910389 ; [fp - 16] 0x003f8d910389 <JSFunction readPackageScope (sfi = 0x3f8dbfc659)> 1: 0x003f9c0c15a9 ; [fp + 16] 0x003f9c0c15a9 <undefined> 2: 0x003f8df81161 ; [fp - 152] 0x003f8df81161 <String[99]: u"/home/luyahan/testenode/web-ext/node_modules/@babel/plugin-transform-member-expression-literals/lib"> 3: 0x003f8d901121 ; [fp - 32] 0x003f8d901121 <FunctionContext[129]> 4: 0x000000000000 ; [fp - 40] 0 5: 0x006300000000 ; [fp - 48] 99 6: (optimized out) 7: (optimized out) 8: (optimized out) 9: (optimized out) 10: (optimized out) 11: (optimized out) reading input frame readPackage => bytecode_offset=13, args=2, height=10, retval=0(#1); inputs: 0: 0x003f8d9026c9 ; (literal 17) 0x003f8d9026c9 <JSFunction readPackage (sfi = 0x3f8dbfc601)> 1: 0x003f9c0c15a9 ; (literal 18) 0x003f9c0c15a9 <undefined> 2: 0x003f8df81121 ; [fp - 64] 0x003f8df81121 <String[100]: uc"/home/luyahan/testenode/web-ext/node_modules/@babel/plugin-transform-member-expression-literals/lib/"> 3: 0x003f8d901121 ; (literal 19) 0x003f8d901121 <FunctionContext[129]> 4: (optimized out) 5: (optimized out) 6: (optimized out) 7: (optimized out) 8: (optimized out) 9: (optimized out) 10: (optimized out) 11: (optimized out) 12: (optimized out) 13: (optimized out) 14: (optimized out) translating baseline frame readPackageScope => bytecode_offset=92, variable_frame_size=56, frame_size=128 0x003ffbdde860: [top + 120] <- 0x003f8df81161 <String[99]: u"/home/luyahan/testenode/web-ext/node_modules/@babel/plugin-transform-member-expression-literals/lib"> ; stack parameter (input #2) 0x003ffbdde858: [top + 112] <- 0x003f9c0c15a9 <undefined> ; stack parameter (input #1) ------------------------- 0x003ffbdde850: [top + 104] <- 0x003f8e0b7720 ; bottommost caller's pc 0x003ffbdde848: [top + 96] <- 0x003ffbdde930 ; caller's fp 0x003ffbdde840: [top + 88] <- 0x003f8d901121 <FunctionContext[129]> ; context (input #3) 0x003ffbdde838: [top + 80] <- 0x003f8d910389 <JSFunction readPackageScope (sfi = 0x3f8dbfc659)> ; function (input #0) 0x003ffbdde830: [top + 72] <- 0x000000000002 ; actual argument count 0x003ffbdde828: [top + 64] <- 0x003f8da30df1 <BytecodeArray[132]> ; bytecode array 0x003ffbdde820: [top + 56] <- 0x009100000000 <Smi 145> ; bytecode offset ------------------------- 0x003ffbdde818: [top + 48] <- 0x000000000000 <Smi 0> ; stack parameter (input #4) 0x003ffbdde810: [top + 40] <- 0x006300000000 <Smi 99> ; stack parameter (input #5) 0x003ffbdde808: [top + 32] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #6) 0x003ffbdde800: [top + 24] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #7) 0x003ffbdde7f8: [top + 16] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #8) 0x003ffbdde7f0: [top + 8] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #9) 0x003ffbdde7e8: [top + 0] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #10) translating baseline frame readPackage => bytecode_offset=13, variable_frame_size=88, frame_size=160 0x003ffbdde7e0: [top + 152] <- 0x003f8df81121 <String[100]: uc"/home/luyahan/testenode/web-ext/node_modules/@babel/plugin-transform-member-expression-literals/lib/"> ; stack parameter (input #2) 0x003ffbdde7d8: [top + 144] <- 0x003f9c0c15a9 <undefined> ; stack parameter (input #1) ------------------------- 0x003ffbdde7d0: [top + 136] <- 0x0000011e06c0 ; caller's pc 0x003ffbdde7c8: [top + 128] <- 0x003ffbdde848 ; caller's fp 0x003ffbdde7c0: [top + 120] <- 0x003f8d901121 <FunctionContext[129]> ; context (input #3) 0x003ffbdde7b8: [top + 112] <- 0x003f8d9026c9 <JSFunction readPackage (sfi = 0x3f8dbfc601)> ; function (input #0) 0x003ffbdde7b0: [top + 104] <- 0x000000000002 ; actual argument count 0x003ffbdde7a8: [top + 96] <- 0x003f8da310e9 <BytecodeArray[201]> ; bytecode array 0x003ffbdde7a0: [top + 88] <- 0x004200000000 <Smi 66> ; bytecode offset ------------------------- 0x003ffbdde798: [top + 80] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #4) 0x003ffbdde790: [top + 72] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #5) 0x003ffbdde788: [top + 64] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #6) 0x003ffbdde780: [top + 56] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #7) 0x003ffbdde778: [top + 48] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #8) 0x003ffbdde770: [top + 40] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #9) 0x003ffbdde768: [top + 32] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #10) 0x003ffbdde760: [top + 24] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #11) 0x003ffbdde758: [top + 16] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #12) 0x003ffbdde750: [top + 8] <- 0x003f9c0c1df9 <Odd Oddball: optimized_out> ; stack parameter (input #13) 0x003ffbdde748: [top + 0] <- 0x0000699df449 ; return value 0 [bailout end. took 10.776 ms]

cimpare arm64:
[completed optimizing 0x1e1cd02c13f1 <JSFunction nextPart (sfi = 0x281794044c89)> (target TURBOFAN)] [marking dependent code 0x7faec80e48e1 (0x0e004765c991 <SharedFunctionInfo readPackageScope>) (opt id 6) for deoptimization, reason: code dependencies] [marking dependent code 0x7faec80a5801 (0x0e004765d621 <SharedFunctionInfo Module._nodeModulePaths>) (opt id 1) for deoptimization, reason: code dependencies] [deoptimize marked code in all contexts] [marking 0x17de35e029a9 <JSFunction nativeModuleRequire (sfi = 0x30620193e349)> for optimization to TURBOFAN, ConcurrencyMode::kConcurrent, reason: small function] [marking 0x3bfb81011fc1 <JSFunction stat (sfi = 0xe004765c729)> for optimization to TURBOFAN, ConcurrencyMode::kConcurrent, reason: hot and stable] [compiling method 0x3bfb81011fc1 <JSFunction stat (sfi = 0xe004765c729)> (target TURBOFAN), mode: ConcurrencyMode::kConcurrent] [compiling method 0x17de35e029a9 <JSFunction nativeModuleRequire (sfi = 0x30620193e349)> (target TURBOFAN), mode: ConcurrencyMode::kConcurrent] [optimizing 0x3bfb81011fc1 <JSFunction stat (sfi = 0xe004765c729)> (target TURBOFAN) - took 0.051, 9.891, 0.185 ms] [completed optimizing 0x3bfb81011fc1 <JSFunction stat (sfi = 0xe004765c729)> (target TURBOFAN)] [optimizing 0x17de35e029a9 <JSFunction nativeModuleRequire (sfi = 0x30620193e349)> (target TURBOFAN) - took 0.050, 26.272, 0.181 ms]

Yahan Lu

unread,
Mar 27, 2023, 5:04:23 AM3/27/23
to v8-dev
I want to know why it bailout by reason UNKNOW but arm64 dones't bailout? How to debug it?

Leszek Swirski

unread,
Mar 27, 2023, 5:16:03 AM3/27/23
to v8-...@googlegroups.com
Lazy deopts in general happen due to dependency invalidation (see all those "marking dependent code" traces). The lazy deopt bailouts then happen when the code is running on the stack at the time when the dependency is invalidated -- otherwise the code is just silently discarded in the background. This could simply be a timing issue, perhaps to do with concurrent compilation or GC timing changing due to different code sizes. Have you tried with `--single-threaded`?

--
--
v8-dev mailing list
v8-...@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/83584948-0447-4e86-9380-28cd5118182en%40googlegroups.com.
Message has been deleted
Message has been deleted
Message has been deleted

Lu Yahan

unread,
Mar 31, 2023, 9:07:47 AM3/31/23
to v8-...@googlegroups.com
After patch:
```
luyahan@plct-dev-7:~/source/node $ git diff HEAD^
diff --git a/deps/v8/src/builtins/builtins-definitions.h b/deps/v8/src/builtins/builtins-definitions.h
index c793ef521f..175acbd495 100644
--- a/deps/v8/src/builtins/builtins-definitions.h
+++ b/deps/v8/src/builtins/builtins-definitions.h
@@ -190,7 +190,7 @@ namespace internal {
/* Baseline Compiler */ \
ASM(BaselineOutOfLinePrologue, BaselineOutOfLinePrologue) \
ASM(BaselineOutOfLinePrologueDeopt, Void) \
- ASM(BaselineOnStackReplacement, BaselineOnStackReplacement) \
+ ASM(BaselineOnStackReplacement, OnStackReplacement) \
ASM(BaselineLeaveFrame, BaselineLeaveFrame) \
ASM(BaselineOrInterpreterEnterAtBytecode, Void) \
ASM(BaselineOrInterpreterEnterAtNextBytecode, Void) \

```
The riscv issue be fixed. But in my understanding, OnStackReplacementDescriptor is the same as BaselineOnStackReplacementDescriptor.

Lu Yahan
> You received this message because you are subscribed to a topic in the Google Groups "v8-dev" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/topic/v8-dev/OzIU8XFFt3o/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to v8-dev+un...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/CAGRskv9_%2B4CN-Vs6MC2o11rzZ3kzFF-T60LSi8KPUYeJG4gArA%40mail.gmail.com.

Reply all
Reply to author
Forward
0 new messages