Skip to content

Investigate VTDecompressionSession DecodeFrameTest codecBadDataErr (-8969) on iOS/tvOS 26.4 #24844

@dalexsoto

Description

@dalexsoto

Background

In PR #24817 (Xcode 26.4 Beta 2 monotouch stabilization), we added a mitigation in:

  • tests/monotouch-test/VideoToolbox/VTDecompressionSessionTests.cs (DecodeFrameTest)

The test now treats output-callback status -8969 as a known instability on iOS/tvOS 26.4 and marks the run Inconclusive instead of failing hard.

Why this issue

Review feedback requested a separate follow-up because -8969 is codecBadDataErr, and we should investigate a deterministic/fixable root cause instead of keeping a broad test mitigation forever.

PR discussion reference: #24817 (comment)

Evidence gathered

  • CI triage identified MonoTouchFixtures.VideoToolbox.VTDecompressionSessionTests.DecodeFrameTest failures in iOS/tvOS simulator jobs during the Xcode 26.4 bump work.
  • Failing signature observed in callback path: status -8969 (codecBadDataErr).
  • Current mitigation records count of this callback status and ends Assert.Inconclusive (...) when observed.

Current code behavior (temporary mitigation)

In DecodeFrameTest:

  • On iOS/tvOS 26.4+, callback status -8969 is counted and not added to failure list.
  • If any such callbacks occurred, test ends as inconclusive:
    • Assert.Inconclusive ("Known decoder callback status -8969 observed ...")

Suggested investigation

  • Reproduce with targeted runs on iOS and tvOS simulators:
    • SIMCTL_CHILD_NUNIT_TEST_NAME=MonoTouchFixtures.VideoToolbox.VTDecompressionSessionTests.DecodeFrameTest make -C tests/monotouch-test/dotnet/iOS run
    • SIMCTL_CHILD_NUNIT_TEST_NAME=MonoTouchFixtures.VideoToolbox.VTDecompressionSessionTests.DecodeFrameTest make -C tests/monotouch-test/dotnet/tvOS run
  • Determine if the bad-data callback is:
    • simulator-only,
    • asset-specific (xamvideotest.mp4),
    • timing-sensitive in async decompression callback handling, or
    • tied to decode-session setup/format assumptions after Xcode 26.4.
  • Replace the inconclusive fallback with a deterministic assertion once root cause is understood.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions