RealMediaBenchmark documents a populate path its own code explains cannot work #101
Closed
opened 2026-08-25 14:19:48 +00:00 by JMR-dev
·
1 comment
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#101
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.
Two findings in
app/src/androidTest/java/org/libremediaconverter/bench/RealMediaBenchmark.kt. The first is certain; the second is observed but not explained, and is written that way.1. The file tells you to populate it in the one way it later explains cannot work
The class KDoc:
The
samplesproperty KDoc, twelve lines below, onprivate val samples: File get() = context.filesDir:context.filesDiris/data/user/0/org.libremediaconverter/files/. The push target is/sdcard/Android/data/org.libremediaconverter/files/, which isgetExternalFilesDir(null). Theyare different directories, and the property KDoc exists specifically to explain why the class
KDoc's instruction fails — including that it fails confusingly, as an unparseable input rather
than a permission error.
So anyone following the documented procedure stages files the benchmark cannot read, and gets a
skip they will read as "not staged yet". The fix is to make the class KDoc name the
run-asrouteits own property KDoc already describes.
Same defect family as R14, R15, R20, R25 and #46 — a claim that was true when written, next to the
correction, with nothing making them agree.
2. Observed, unexplained: the benchmark ran and failed on CI
The same KDoc says "harmless in CI". It was not, twice today, on gating legs:
Abort: no output sample written in the last 25000 milliseconds/ExportException: Muxer errorRealMediaBenchmark > hardwareVersusSoftwareOnRealVideoand one moreWhat is not established: why.
hardwareVersusSoftwareOnRealVideohasassumeTrue(input != null)on line 87, and an unmet assumption reports as skipped, not failed — so on the face of it the
sample was present in
context.filesDiron a CI emulator, which should not happen. I have notconfirmed that, and I am not asserting it.
Worth checking in this order:
appearing alongside it?
no output sample written in the last 25000 millisecondsis a starvation signature. #93'sroot cause was the launcher ANRing on a loaded runner; a runner loaded enough for that would also
starve a hardware transcode. These may be one problem, in which case #96 fixed the accessibility
symptom and this is the same illness elsewhere.
Why it matters beyond tidiness
A benchmark in a gating suite is timing-sensitive by construction, and this one's own KDoc says
it is "Not a correctness test — the assertions are deliberately loose" and "not part of the
automated suite". If it can run on CI at all, the gating legs inherit the flakiness of a
measurement rather than of a check.
Done means
run-asroute, so the two halves of the file agree. Acceptance: areader following the class KDoc alone stages files the test can read.
run on CI (and it is shown), or it can (and it is excluded from the gating legs, or the KDoc stops
claiming otherwise).
Correcting half of this ticket. Section 2 was wrong, and I filed it wrong.
I wrote that
RealMediaBenchmark"ran and failed on CI" and that "harmless in CI" was false. It is true. Measured on the same run I cited (32857067112, PR #97, E2E API 34):The two sample-dependent benchmarks skip, exactly as their
assumeTrueguards intend, and the(2 skipped)in every green leg all session has been these two. The guard works and the KDoc'sclaim is accurate.
How I got it wrong: I grepped the failed-run log for test names and read
RealMediaBenchmark > hardwareVersusSoftwareOnRealVideoas a failure. It was aSKIPPEDline. Section 2 even listed thisas possibility (2) — "or is the failure arriving from somewhere else in the same leg and the
benchmark names simply appearing alongside it" — and that is what happened. I should have measured
before filing rather than after.
What actually failed on that gating leg is a different test:
That is now filed separately.
[AVD - 17]in the same run is the advisory API 37 job failing itsthree marked tests by design, which is the other thing my grep conflated.
What stands
Section 1 is unaffected and still worth fixing. The class KDoc tells you to
adb pushto/sdcard/Android/data/.../files/, while thesamplesproperty twelve lines below readscontext.filesDirand its own KDoc explains that pushing to the external dir yields EACCESpresenting as an unparseable input. Those are different directories and the file contradicts itself.
That is verifiable by reading, needed no CI evidence, and is the reason this ticket should stay open.
Retitling accordingly. The "not harmless in CI" half is withdrawn.