Cap GPS resolver probe logging

This commit is contained in:
2026-06-20 22:05:29 -05:00
parent 1d77b8483f
commit da92e927e5
+18 -10
View File
@@ -178,8 +178,10 @@ constexpr uintptr_t kGpsFilteredCostProviderVtableRva = 0x2AE60F8;
constexpr uintptr_t kGpsAuxMultiplierRva = 0x040BB00; constexpr uintptr_t kGpsAuxMultiplierRva = 0x040BB00;
constexpr uintptr_t kGpsNodeMultiplierRva = 0x040BB40; constexpr uintptr_t kGpsNodeMultiplierRva = 0x040BB40;
constexpr uintptr_t kGpsCostMultiplierTableRva = 0x3154D28; constexpr uintptr_t kGpsCostMultiplierTableRva = 0x3154D28;
constexpr uint64_t kGpsResolveTraceWindowMs = 5000; constexpr uint64_t kGpsResolveTraceWindowMs = 1200;
constexpr uint32_t kGpsResolveSelectedRetLogLimit = 4096; constexpr uint32_t kGpsResolveSelectedRetLogLimit = 24;
constexpr uint32_t kGpsResolveStartupLogLimit = 8;
constexpr uint32_t kGpsResolveVerboseDumpLimit = 4;
constexpr std::array<float, 7> kGpsPatchedCostMultipliers = { constexpr std::array<float, 7> kGpsPatchedCostMultipliers = {
12.0f, 7.0f, 2.5f, 0.0f, 3.0f, 2.0f, 1.25f, 12.0f, 7.0f, 2.5f, 0.0f, 3.0f, 2.0f, 1.25f,
}; };
@@ -4011,7 +4013,7 @@ int32_t DetourGpsResolveHandle(void* aGraph, uint64_t aHandle, void* aOutSegment
shouldLog = result >= 0 && hasSegment && hasPoint && shouldLog = result >= 0 && hasSegment && hasPoint &&
((IsSelectedGpsResolveReturnRva(returnRva) && inTraceWindow && ((IsSelectedGpsResolveReturnRva(returnRva) && inTraceWindow &&
returnCallCount < kGpsResolveSelectedRetLogLimit) || returnCallCount < kGpsResolveSelectedRetLogLimit) ||
callCount < 32); callCount < kGpsResolveStartupLogLimit);
} }
if (shouldLog) if (shouldLog)
@@ -4044,13 +4046,19 @@ int32_t DetourGpsResolveHandle(void* aGraph, uint64_t aHandle, void* aOutSegment
AppendPointerWithRva(line, "segment_p30", aux30); AppendPointerWithRva(line, "segment_p30", aux30);
AppendPointerWithRva(line, "segment_p38", aux38); AppendPointerWithRva(line, "segment_p38", aux38);
AppendGpsPointSummary(line, "pointSummary", point); AppendGpsPointSummary(line, "pointSummary", point);
AppendBytesPointer(line, "segment_raw68", segment, 0x68); const auto shouldDumpBytes =
AppendBytesPointer(line, "point_raw14", point, 0x14); callCount < kGpsResolveVerboseDumpLimit || returnCallCount < kGpsResolveVerboseDumpLimit;
AppendBytesPointer(line, "segment_p08_raw30", segmentMeta, 0x30); line << " dump=" << (shouldDumpBytes ? 1 : 0);
AppendBytesPointer(line, "segment_p20_raw40", aux20, 0x40); if (shouldDumpBytes)
AppendBytesPointer(line, "segment_p28_point_raw18", aux28Point, 0x18); {
AppendBytesPointer(line, "segment_p30_raw40", aux30, 0x40); AppendBytesPointer(line, "segment_raw68", segment, 0x68);
AppendBytesPointer(line, "segment_p38_raw40", aux38, 0x40); AppendBytesPointer(line, "point_raw14", point, 0x14);
AppendBytesPointer(line, "segment_p08_raw30", segmentMeta, 0x30);
AppendBytesPointer(line, "segment_p20_raw40", aux20, 0x40);
AppendBytesPointer(line, "segment_p28_point_raw18", aux28Point, 0x18);
AppendBytesPointer(line, "segment_p30_raw40", aux30, 0x40);
AppendBytesPointer(line, "segment_p38_raw40", aux38, 0x40);
}
if (gActiveGpsRouteProducerCall != UINT32_MAX) if (gActiveGpsRouteProducerCall != UINT32_MAX)
{ {
line << " routeProducerCall=" << gActiveGpsRouteProducerCall; line << " routeProducerCall=" << gActiveGpsRouteProducerCall;