The e2e report says a wedged leg completed cleanly #118
Closed
opened 2026-08-26 02:35:03 +00:00 by JMR-dev
·
2 comments
No Branch/Tag Specified
main
fix/102-picker-back-press-overshoot
fix/268-saf-picker-determinism
feat/ogg-vorbis-libvorbis
feat/expedited-conversion-work
fix/gate-cache-in-worktrees
chore/gate-runs-shellcheck
test/publish-delete-arm-real-provider
docs/e8-instrumented-coverage
docs/api37-carrier-count-drift
docs/e7-second-constraint
test/publish-to-a-real-saf-destination
fix/api37-report-match-line
fix/api37-task-snapshot-crash
test/join-failure-message-on-device
docs/e2e-read-findings-e7
test/cancelling-a-running-export
test/reattach-to-a-running-job
test/content-uri-reaches-ffmpeg
fix/launcher-wiring-waits-for-the-pick
fix/cancel-tests-need-a-slower-encode
test/cancelling-a-running-join
test/cancelling-a-running-session
test/notification-cancel-action
test/ffmpeg-progress-is-observed
test/fallback-asserts-the-path
test/flac-and-opus-assert-their-format
docs/e2e-read-findings
docs/wave4-coverage-numbers
fix/injectable-startup-sweep-scope
test/session-outcome-seam
test/launcher-callback-identity
test/theme-follows-system-dark
test/audio-drop-arm
fix/rotation-waits-for-recreation
fix/convert-guards-on-ready
test/retry-save-mime
test/hardware-progress-reaches-workmanager
test/ffprobe-mapping-seam
test/device-codec-enumeration-seam
test/unknown-container-row
test/null-message-fallbacks
test/cancel-reaches-workmanager
docs/coverage-wave3-recovery
test/concat-engine-seam
docs/coverage-wave3
test/mediaprobe-merge-seam
test/adaptive-shell-wiring
test/aac-audio-args
test/notification-progress-text
test/media3-muxer-guard
test/hardware-fallback-and-cancellation
test/unprobeable-join-clip
test/one-branch-outcomes
test/foreground-type-regimes
fix/bound-wedge-diagnostics
docs/coverage-wave2
test/screen-wiring
test/viewmodel-setters
test/join-state-mapping
test/conversion-state-mapping
test/dedupe-user-messages
fix/restore-stack-merges
test/refused-jobs
test/concatworker-failure-arms
test/container-capabilities-audio
test/readspec-enum-fallbacks
test/outputpublisher-seams
test/mediaprobe-track-seam
test/outputpublisher-partial-branches
test/fake-provider-scaffolding
docs/coverage-read-findings
chore/gitignore-kotlin
test/bound-the-hangs
docs/coverage-remeasure
ci/baseline-counter-precision
fix/invalid-suggestion-chip
ci/wedged-leg-report
fix/reattachment-overwrites-pick
test/theme-live-branches
fix/failed-save-retry
fix/empty-composition-crash
ci/advisory-failure-report
docs/seven-run-counts
test/release-permission-guard
ci/build-workflow-permissions
docs/api37-point-release
docs/benchmark-populate-path
fix/dead-assertion-probe-test
ci/actionlint
test/device-codecs-encode-consequence
fix/sdkmanager-pipefail
docs/readme-restart-claim
fix/saf-picker-root-discovery
fix/probe-dispatcher-seam
test/media3engine-mime-tables
test/mediaprobe-pure-helpers
fix/codec-vocabulary-drift
docs/robolectric-rationale-correction
docs/api37-advisory-counts
test/r38-8-saf-e2e
test/r38-7-join-states
test/r38-6-conversion-states
test/r38-5-state-seam
fix/jacoco-robolectric-coverage
docs/instrumented-tests-correction
test/r38-2-filecard
test/r38-4-advanced-picker
test/r38-3-pickers
tools/file-issue-script
tools/api-37-emulator
fix/review-app-gaps
docs/review-corrections
No results found.
Labels
Clear labels
above-cut
accessibility
backlog
bug
confirmed
documentation
duplicate
enhancement
good first issue
help wanted
invalid
plausible
question
sev:high
sev:low
sev:medium
wontfix
Worked autonomously overnight: local, JVM-verifiable, no product decision
Barrier affecting people with disabilities
Held for manual review: product/UX call, CI/workflow, hardware, or unverifiable here
Something isn't working
Reviewer demonstrated the defect
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Reviewer could not fully demonstrate it; treat as unproven
Further information is requested
High severity
Low severity
Medium severity
This will not be worked on
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: JMR-dev/LibreMediaConverter#118
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The report added by #111 prints
completed cleanly: yesfor a leg that the wedgetimeout had just killed. Observed on PR #115 (a docs-only change), run
32922652540,E2E API 34, job98035980326:The report runs as part of the wedge path — six seconds before the warning — and
answers a question it was not asked.
completed cleanlymeans "instrumentationwas not aborted", which was true; the leg still died, killed by
WEDGE_TIMEOUTafter ~22 minutes. A reader scanning the table sees
received: 59andcompleted cleanly: yesand has to notice a separate##[warning]line to learnthe leg failed at all.
failed: unknownis the honest half and is doing its job: gradle never printed asummary line, so the count genuinely is not knowable. That part should stay.
What happened underneath, for whoever picks this up: the run reached
52/59 completed. (2 skipped) (0 failed), the XML ultimately carried all 59, andthen the leg hung — a post-test hang during teardown rather than an abort or an
assertion failure.
bad color buffer handle 375is the emulator's own complainttwo seconds later. That is a new mode relative to the three on #102, and the
only reason it is legible at all is the #111 report; before it, this was an
anonymous red leg.
Suggested shape: when the wedge path is what invoked the report, say so in
the table rather than leaving
completed cleanlyto answer for it — e.g. awedged: yes (killed after Ns)row, or suppressingcompleted cleanlyin favourof the wedge line. Do not change
failed: unknown, and nothing here shouldchange the pass/fail rules or any job's status — the leg already fails
correctly. This is about what the table says, not what it decides.
Test:
e2e-report-shape.shis exercised against captured CI output ratherthan a live emulator (that is how #111 was verified, and this host cannot run API
37 at all). The captured stdout of job
98035980326is a ready-made fixture forthe wedge case.
Second sighting, different API level — the mode is not specific to 34
2026-08-26T03:23Z, run on PR #117, E2E API 33, job98045364829:Same shape as the API 34 sighting that prompted this ticket: every test ran (
receivedequalsexpected), gradle never printed a summary, and the leg then hung in teardown untilWEDGE_TIMEOUTkilled it. No abort trace this time —
hasReadColorBufferDmaandTaskSnapshotPerare both absent,so this is not #108 wearing a different hat.
Two things this settles:
completed cleanly: yesagain, printed on a leg the wedgehad just killed — which is what this ticket is about, and #121 is fixing.
Worth noting for whoever reviews #121: both known samples have
received == expectedandfailed: unknown. That combination — a full test count with an unknowable failure count — may be ausable signal in its own right, but do not infer the wedge from it. #121 was briefed to take the
wedge signal explicitly from
e2e-run.shrather than guess it from log shape, and that is still theright call; this is a corroborating pattern, not a substitute.
Correcting myself, and a much stronger case for this ticket
I read the wedge diagnostics artifacts — which I had said were worth reading and nobody had — and
my description of this mode was wrong in both earlier comments.
I wrote that "every test ran, then the leg hung in teardown", on the strength of
received: 60matching
expected: 60. That is not what happened. In both recorded wedges the TestRunner log endson a
started:with nofinished::grep -c "finished: thePickedInputSurvivesARealRotation"is 0 in both. A test was still runningwhen the timeout fired. Filed as #122.
What that means for this ticket
The misreport is worse than "
completed cleanlyanswers the wrong question". On a wedged leg thetable also asserts
received: 60— a count that includes a test which never returned. So the tworows a reader is most likely to trust are both wrong in the same direction, and together they say
"all 60 tests came back and nothing was aborted" about a leg that died with a test still executing.
failed: unknownremains the only honest row.The most valuable thing the wedge report could say
The diagnostics artifact already contains the answer —
--- running/last instrumented test (logcat TestRunner) ---is literally the first section — but you have to download and unzip an artifact tosee it, and only after noticing the
##[warning]line at all.Naming the last test started with no matching
finished:would turn a 20-minute anonymous redinto a one-line diagnosis, exactly as #111 did for ordinary failures. That is how #122 was found,
and it took a manual artifact download to do it.
I am not silently widening #121's scope — it was briefed narrowly and is nearly done. Whether that
belongs in #121 or in a follow-up is a judgement call; if it does not land there, it should be its
own ticket rather than lost in this thread.
Also worth fixing while in here:
receivedshould not claim a test came back when the runner neversaid
finished:for it.