Skip to content

feat(sauce): Filter Android logcat by given tags - #53

Merged
limbonaut merged 1 commit into
mainfrom
feat/logcat-filter
Jul 8, 2026
Merged

feat(sauce): Filter Android logcat by given tags#53
limbonaut merged 1 commit into
mainfrom
feat/logcat-filter

Conversation

@limbonaut

Copy link
Copy Markdown
Collaborator

Apprunner dumps the logcat as 10000 lines, making it hard to get the right information without filtering. This PR adds an optional SAUCE_LOGCAT_FILTER environment variable for Android SauceLabs sessions. When set, its whitespace-separated logcat filterspecs (tag[:priority], e.g. godot:V sentry-native:V *:S) are passed to the Appium session through the logcatFilterSpecs capability, trimming the otherwise very noisy system-wide Android log down to the requested tags at capture time so that app markers are not buried or evicted from the log buffer. When unset, behavior is unchanged and the full logcat is returned.

@limbonaut
limbonaut marked this pull request as ready for review July 8, 2026 12:22
@limbonaut

Copy link
Copy Markdown
Collaborator Author

Integration branch where it works: getsentry/sentry-godot#804

@tustanivsky tustanivsky left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! I think Unreal could benefit from having this integrated as well.

@bitsandfoxes bitsandfoxes left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@limbonaut
limbonaut merged commit 219f36f into main Jul 8, 2026
22 checks passed
tustanivsky added a commit to getsentry/sentry-unreal that referenced this pull request Jul 26, 2026
The crash-capture test intermittently fails with "Expected 1
EVENT_CAPTURED line(s) but found 0": real SauceLabs devices emit
thousands of unrelated log lines per second (AuthPII alone was ~8k of
the ~10k captured lines), evicting UE's output from the captured log
window before the harness reads it. Use app-runner's
SAUCE_LOGCAT_FILTER (getsentry/app-runner#53, already in the pinned
revision) to filter at capture time.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
tustanivsky added a commit to getsentry/sentry-unreal that referenced this pull request Jul 27, 2026
The crash-capture test intermittently fails with "Expected 1
EVENT_CAPTURED line(s) but found 0": real SauceLabs devices emit
thousands of unrelated log lines per second (AuthPII alone was ~8k of
the ~10k captured lines), evicting UE's output from the captured log
window before the harness reads it. Use app-runner's
SAUCE_LOGCAT_FILTER (getsentry/app-runner#53, already in the pinned
revision) to filter at capture time.
tustanivsky added a commit to getsentry/sentry-unreal that referenced this pull request Jul 28, 2026
* Harden integration-test crash uploads in CI

The desktop crash test can be flaky because both desktop backends can race the upload on shutdown: crashpad uploads out-of-process while the crashing process is already exiting, and the native out-of-process daemon drains its transport bounded by ShutdownTimeout (default 5000ms), which can be too short for a large envelope or slow link (the same root cause seen dropping crashes on the Xbox native backend). Non-crash tests upload via the SDK transport on sentry_close and hit the same limit.

Raise ShutdownTimeout so the native daemon's crash upload and async event uploads have time to drain, and enable CrashpadWaitForUpload so the crashpad legs wait for the crash upload before exiting.

Also include the sentry-native database (.sentry-native) in the on-failure artifacts for the Windows and Linux integration tests to simplify diagnosing missing/failed uploads.

* Include hidden files so .sentry-native is captured in the artifact

actions/upload-artifact skips hidden files by default, which dropped the dotted .sentry-native crash DB (daemon log, minidumps) from the failure artifacts.

* Add memory limit util

* Raise sentry-native thread stack guarantee in Windows integration tests

Stack-overflow crash capture intermittently dies in-process (secondary
0xC0000005, no minidump produced) because the default 64 KiB guarantee
is not always enough for UE's handler chain. SENTRY_HANDLER_STACK_SIZE
is read by sentry-native at init, so no rebuild is needed.

* Bump sentry-native to pick up thread stack guarantee fixes

Points the submodule at fix/thread-stack-guarantee-static-init (master
+ fix): kernel32 caching now precedes backend startup in static builds
so the default thread stack guarantee is actually applied, and the
native backend now sets it like the other backends do. This should let
the in-process handlers survive stack-overflow crashes in the Windows
integration tests.

* Allow manual dispatch of package-plugin-workflow

Dispatched runs get their own concurrency group (run_id fallback), so
multiple validation runs can execute in parallel without canceling the
PR run.

* Filter Android logcat capture to relevant tags in integration tests

The crash-capture test intermittently fails with "Expected 1
EVENT_CAPTURED line(s) but found 0": real SauceLabs devices emit
thousands of unrelated log lines per second (AuthPII alone was ~8k of
the ~10k captured lines), evicting UE's output from the captured log
window before the harness reads it. Use app-runner's
SAUCE_LOGCAT_FILTER (getsentry/app-runner#53, already in the pinned
revision) to filter at capture time.

* Drop exact replay duration assertion in integration tests

The server computes replay duration from segment timestamps, which
shift with crash handling timing (observed 6 vs the sidecar's nominal
5 seconds), so an exact match is inherently flaky.

* Update sentry-native pin to reworded fix branch

The stack guarantee fix branch was rebased for the upstream PR
(getsentry/sentry-native#1918); the previously pinned commit no longer
exists on any branch.

* Remove workflow_dispatch trigger used for CI validation

* Revert sentry-native pin to 0.15.4

The thread stack guarantee fix (getsentry/sentry-native#1918) will be
picked up via a separate dependency update PR once it merges upstream.

* Remove SENTRY_HANDLER_STACK_SIZE env var

* Capture only logs from .sentry-native in failure artifacts

Minidumps and envelopes contain process memory of the crashed test app
(on Linux even the full environment block), which may hold CI secrets.
Restrict the artifact to the daemon logs, which carry the diagnostic
value.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants