From 7d80c9678eabd3847f3c71afdc3807be8f3f1465 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Sun, 6 Sep 2026 02:39:10 -0400 Subject: [PATCH] [Test] (Retrace): scan a verify retrace's log for the third MGPipe Fatal too - the block looked for Fatal{PipeVerifyDiffer and Fatal{UnmigratedPipeInput only. A misspelt MOBILEGL_PIPE_VERIFY_CORRUPT / MOBILEGL_PIPE_POISON_OMIT reports Fatal{PipeVerifyBadKnob, and it was caught only because D2 makes that one abort the process - which is precisely what MOBILEGL_PIPE_VERIFY_FATAL=0, the supported triage configuration, takes away. A typo'd knob would have left a negative-control run looking healthy - the FATAL_ERROR text now says what each of the three means and where the two vocabularies live, because that message is the whole diagnosis a `cmake -P` step gets --- tools/trace_replay/run_trace_case.cmake | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/trace_replay/run_trace_case.cmake b/tools/trace_replay/run_trace_case.cmake index 1d76d704..6f0110bf 100644 --- a/tools/trace_replay/run_trace_case.cmake +++ b/tools/trace_replay/run_trace_case.cmake @@ -140,10 +140,13 @@ endif() # retrace is untouched: # * mobilegl.log exists - the replay wrote one, so the library was loaded and logging; # * it carries "MGPipe: verify armed" - the comparator armed in THIS process; -# * it carries neither Fatal{PipeVerifyDiffer (a push/pull divergence, the thing the mode -# exists to find) nor Fatal{UnmigratedPipeInput (a backend read of a field the verb's fill -# table does not list - fixed by adding the row to MG_Pipe/FillPoints.def, never by marking -# the field sticky). +# * it carries none of the three MGPipe Fatals: Fatal{PipeVerifyDiffer (a push/pull divergence, +# the thing the mode exists to find), Fatal{UnmigratedPipeInput (a backend read of a field the +# verb's fill table does not list - fixed by adding the row to MG_Pipe/FillPoints.def, never by +# marking the field sticky), and Fatal{PipeVerifyBadKnob (a misspelt MOBILEGL_PIPE_VERIFY_CORRUPT +# or MOBILEGL_PIPE_POISON_OMIT). The third is in the regex on purpose even though D2 makes it +# abort the process: with MOBILEGL_PIPE_VERIFY_FATAL=0 the abort is exactly what does not +# happen, and a typo'd knob would otherwise leave the negative-control lane looking healthy. # The Fatal check is not redundant with the replay's exit status: MOBILEGL_PIPE_VERIFY_FATAL=0 is # the supported triage configuration, and there the divergence is logged and counted rather than # aborted, so the run would otherwise finish 0 with its own report in the log. @@ -168,7 +171,7 @@ if(DEFINED ENV{MOBILEGL_PIPE_VERIFY} AND NOT "$ENV{MOBILEGL_PIPE_VERIFY}" STREQU "runtime artifact is the one unpacked at ${MOBILEGL_LIBRARY}.") endif() file(STRINGS "${mobilegl_log}" pipe_verify_fatals - REGEX "Fatal\\{(PipeVerifyDiffer|UnmigratedPipeInput)") + REGEX "Fatal\\{(PipeVerifyDiffer|UnmigratedPipeInput|PipeVerifyBadKnob)") if(pipe_verify_fatals) foreach(line IN LISTS pipe_verify_fatals) message(STATUS "${line}") @@ -179,7 +182,9 @@ if(DEFINED ENV{MOBILEGL_PIPE_VERIFY} AND NOT "$ENV{MOBILEGL_PIPE_VERIFY}" STREQU "MOBILEGL_PIPE_VERIFY. Fatal{PipeVerifyDiffer, \"@\"} is a real push/pull " "divergence and is recorded, not silenced; Fatal{UnmigratedPipeInput, \"@\"} " "is a missing row in MG_Pipe/FillPoints.def's class table - add it, regenerate, rerun " - "(never mark the field sticky).") + "(never mark the field sticky); Fatal{PipeVerifyBadKnob, ...} is a misspelt " + "MOBILEGL_PIPE_VERIFY_CORRUPT / MOBILEGL_PIPE_POISON_OMIT - fix the spelling, the " + "vocabularies are kMGPipeInputFieldNames[] and kMGPipeVerbNames[].") endif() message(STATUS "MGPipe verify: ${pipe_verify_case} armed, zero divergences, zero unmigrated reads") endif()