Bug 1749498 - PrintUsage doesn't exit anymore, exits are done explicitly - r=canaltinova

`PrintUsageThenExit(code)` was supposed to exit when `code` was not zero, but:
- The name didn't reflect that, so it was confusing that `PrintUsageThenExit(0)` would *not* exit.
- The implementation in the Base Profiler exited anyway! This caused issues with some legacy code that still used the now-removed "threads" feature.

This patch renames the function to just `PrintUsage()` and never exits, leaving the caller to invoke `exit(code)` as needed -- with the added benefit that it's possible to exit with a zero code, useful in cases where an exit is not actually an error.

Differential Revision: https://phabricator.services.mozilla.com/D135666
This commit is contained in:
Gerald Squelart 2022-01-12 12:16:59 +00:00
parent d562d1fa70
commit 67edebb322
2 changed files with 32 additions and 26 deletions

View file

@ -1985,7 +1985,7 @@ static char FeatureCategory(uint32_t aFeature) {
return 'x';
}
static void PrintUsageThenExit(int aExitCode) {
static void PrintUsage() {
PrintToConsole(
"\n"
"Profiler environment variable usage:\n"
@ -2088,8 +2088,6 @@ static void PrintUsageThenExit(int aExitCode) {
"does not support"
#endif
);
exit(aExitCode);
}
////////////////////////////////////////////////////////////////////////
@ -2461,8 +2459,8 @@ static uint32_t ParseFeature(const char* aFeature, bool aIsStartup) {
#undef PARSE_FEATURE_BIT
PrintToConsole("\nUnrecognized feature \"%s\".\n\n", aFeature);
// Since we may have an old feature we don't implement anymore, don't exit
PrintUsageThenExit(0);
// Since we may have an old feature we don't implement anymore, don't exit.
PrintUsage();
return 0;
}
@ -2576,7 +2574,8 @@ void profiler_init(void* aStackTop) {
MOZ_RELEASE_ASSERT(!CorePS::Exists());
if (getenv("MOZ_BASE_PROFILER_HELP")) {
PrintUsageThenExit(0); // terminates execution
PrintUsage();
exit(0);
}
SharedLibraryInfo::Initialize();
@ -2652,7 +2651,8 @@ void profiler_init(void* aStackTop) {
PrintToConsole(
"- MOZ_PROFILER_STARTUP_ENTRIES unit must be one of the "
"following: KB, KiB, MB, MiB, GB, GiB");
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
// `long` could be 32 or 64 bits, so we force a 64-bit comparison with
@ -2667,7 +2667,8 @@ void profiler_init(void* aStackTop) {
} else {
PrintToConsole("- MOZ_PROFILER_STARTUP_ENTRIES not a valid integer: %s",
startupCapacity);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -2685,7 +2686,8 @@ void profiler_init(void* aStackTop) {
} else {
PrintToConsole("- MOZ_PROFILER_STARTUP_DURATION not a valid float: %s",
startupDuration);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -2701,7 +2703,8 @@ void profiler_init(void* aStackTop) {
} else {
PrintToConsole("- MOZ_PROFILER_STARTUP_INTERVAL not a valid float: %s",
startupInterval);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -2718,7 +2721,8 @@ void profiler_init(void* aStackTop) {
PrintToConsole(
"- MOZ_PROFILER_STARTUP_FEATURES_BITFIELD not a valid integer: %s",
startupFeaturesBitfield);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
} else {
const char* startupFeatures = getenv("MOZ_PROFILER_STARTUP_FEATURES");

View file

@ -3138,8 +3138,7 @@ static char FeatureCategory(uint32_t aFeature) {
return 'x';
}
// Doesn't exist if aExitCode is 0
static void PrintUsageThenExit(int aExitCode) {
static void PrintUsage() {
MOZ_RELEASE_ASSERT(NS_IsMainThread());
printf(
@ -3243,10 +3242,6 @@ static void PrintUsageThenExit(int aExitCode) {
"does not support"
#endif
);
if (aExitCode != 0) {
exit(aExitCode);
}
}
////////////////////////////////////////////////////////////////////////
@ -4497,8 +4492,8 @@ static uint32_t ParseFeature(const char* aFeature, bool aIsStartup) {
#undef PARSE_FEATURE_BIT
printf("\nUnrecognized feature \"%s\".\n\n", aFeature);
// Since we may have an old feature we don't implement anymore, don't exit
PrintUsageThenExit(0);
// Since we may have an old feature we don't implement anymore, don't exit.
PrintUsage();
return 0;
}
@ -4682,7 +4677,8 @@ void profiler_init(void* aStackTop) {
MOZ_RELEASE_ASSERT(!CorePS::Exists());
if (getenv("MOZ_PROFILER_HELP")) {
PrintUsageThenExit(1); // terminates execution
PrintUsage();
exit(0);
}
SharedLibraryInfo::Initialize();
@ -4769,7 +4765,8 @@ void profiler_init(void* aStackTop) {
} else if (!sizeSuffix.empty()) {
LOG("- MOZ_PROFILER_STARTUP_ENTRIES unit must be one of the "
"following: KB, KiB, MB, MiB, GB, GiB");
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
// `long` could be 32 or 64 bits, so we force a 64-bit comparison with
@ -4784,7 +4781,8 @@ void profiler_init(void* aStackTop) {
} else {
LOG("- MOZ_PROFILER_STARTUP_ENTRIES not a valid integer: %s",
startupCapacity);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -4800,7 +4798,8 @@ void profiler_init(void* aStackTop) {
} else {
LOG("- MOZ_PROFILER_STARTUP_DURATION not a valid float: %s",
startupDuration);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -4813,7 +4812,8 @@ void profiler_init(void* aStackTop) {
} else {
LOG("- MOZ_PROFILER_STARTUP_INTERVAL not a valid float: %s",
startupInterval);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}
@ -4829,7 +4829,8 @@ void profiler_init(void* aStackTop) {
} else {
LOG("- MOZ_PROFILER_STARTUP_FEATURES_BITFIELD not a valid integer: %s",
startupFeaturesBitfield);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
} else {
const char* startupFeatures = getenv("MOZ_PROFILER_STARTUP_FEATURES");
@ -4863,7 +4864,8 @@ void profiler_init(void* aStackTop) {
LOG("- MOZ_PROFILER_STARTUP_ACTIVE_TAB_ID not a valid "
"uint64_t: %s",
startupActiveTabID);
PrintUsageThenExit(1);
PrintUsage();
exit(1);
}
}