-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dead strip! from patching Promise as in @agoric/eventual-send #256
Comments
The
This should not normally happen. However, the linker heuristics for determining what to strip and what to keep are still evolving. Sometimes a function is stripped from the engine that is actually used by a script. That happened here. The missing function is the native code that implements part of
The stripping capability of the linker is an important optimization for embedded systems where code storage space is limited. For desktop work, it isn't critical. You can disable this linker feature in your manifest as shown below..
That will increase the binary executable size but should always eliminate any "dead strip" error. That said, we would like to eliminate those errors completely so we appreciate the reports. |
yes, I saw that, but I didn't know how to make use of it. If there's any way to add file/line numbers to such diagnostics, that sure would help. Or even if it had told me that
bingo.
yes, I think that's the right setting for my use case. Thanks again. I guess I'll leave this open until you commit those two lines... |
It wasn't The bug was in the tools that generate the runtime. Adding diagnostic code to the runtime to help debug the tools runs counter to our goal of minimizing the size of the runtime. Perhaps it can be an extra debug option. But, that's of limited value: the knowledge to fix the problem is about the same as the knowledge needed to isolate the "dead strip" exception. That additional tooling wouldn't significantly widen the group of people who could fix the problem. |
So I'm curious... how did you figure out what got stripped? I'm not averse to stepping though the tools with gdb from time to time, if that's what it takes. |
In this case, gdb wasn't needed. The async function was being called, but the corresponding await never completed. I checked to see if your Though I didn't use it here, a good hack in XS for watching execution (and hence determining when it halts) is to use the debug info to trace the currently executing file and line number (along with a bunch of other information). You can get that by defining In the problem this issue reports, the output looks like this:
|
(linker change described above is available in this repository) |
Ok... Fixed in fb36ba2 |
@phoddie , any clues on how to diagnose
dead strip!
? What does that mean? Where should I look?https://gist.github.com/dckc/685b595f5c41f4ec2de47cd2d1ab3a74
for context, previous episode: #255
The text was updated successfully, but these errors were encountered: