Note, there are (annoyingly) two places we log stack traces. One is _SSignal_StackTrace (handled in this PR) and the other is SLogStackTrace (not handled in this PR).
I think we could remove SLogStackTrace but I don't think we need to do it now.
To test this I added the following code to main.cpp:
int addForever2(int from);
int addForever1(int from) {
if (from == INT_MAX) {
return from;
}
return addForever2(from + 1);
}
int addForever2(int from) {
if (from == INT_MAX) {
return from;
}
return addForever1(from + 1);
}
There are two mutually recursive functions simply because my dev enviroment logs a single line and then <repeated 79 times> for multiple identical loglines in a row. this forces each line to be different from the previous.
Calling this from main generates the following logs:
Details
Note, there are (annoyingly) two places we log stack traces. One is
_SSignal_StackTrace
(handled in this PR) and the other isSLogStackTrace
(not handled in this PR).I think we could remove
SLogStackTrace
but I don't think we need to do it now.Fixed Issues
Fixes slack canvas: https://expensify.enterprise.slack.com/canvas/C0714QF3A1Z $ https://github.com/Expensify/Expensify/issues/397250
Tests
To test this I added the following code to
main.cpp
:There are two mutually recursive functions simply because my dev enviroment logs a single line and then
<repeated 79 times>
for multiple identical loglines in a row. this forces each line to be different from the previous.Calling this from main generates the following logs:
Undoing the change in
main
and running theBadCommand
test still generates reasonable stacks. Example 1 from a segfault:Example 2 from an assertion:
Internal Testing Reminder: when changing bedrock, please compile auth against your new changes