Skip to content

Conversation

@tustanivsky
Copy link
Collaborator

No description provided.

mujacica and others added 13 commits August 7, 2025 17:28
* Re-introduce changes to upload debug symbols. Run demo every 2 hours
* Run demo every 50 minutes
* Forward environment to docker run
* Change Dsn to point to demos
* Extend tracing capabilities of the demo game
* Fix mac build
* Create a span for checkout and checkout response
* Add log statement about SENTRY_DSN
* Run demo with DSN
Updated Unreal Engine Version from 5.5 to 5.6 as that's the new required version.
Added steps on where to start for running the demo locally.
* Change chekout endpoint to flask

* Build dummy request payload

* Temp hack to bind spans/transactions to current scope

* Bump sdk version to 1.1.1

* Bind spans to scope

* Clean up dsn config
@tustanivsky tustanivsky closed this Oct 9, 2025

HttpRequest->OnProcessRequestComplete().BindLambda([=](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
CheckoutSpan->Finish();
Copy link

Choose a reason for hiding this comment

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

Potential bug: Local UObjects are captured by raw pointer in an async lambda and can be garbage collected before the lambda executes, causing a use-after-free.
  • Description: Local UObject instances, specifically USentryTransaction and USentrySpan, are created without being rooted or stored in a UPROPERTY. An asynchronous lambda captures raw pointers to these objects. When the function they are declared in returns, these objects become eligible for garbage collection. If the garbage collector runs before the async HTTP callback completes, the lambda will attempt to access freed memory when calling methods like CheckoutSpan->Finish() or CheckoutTransaction->Finish(), leading to a non-deterministic crash.

  • Suggested fix: To prevent the UObject instances from being garbage collected prematurely, either store them as UPROPERTY members of the game instance, or manually manage their lifetime using AddToRoot() when created and RemoveFromRoot() after the asynchronous operation completes.
    severity: 0.95, confidence: 0.98

Did we get this right? 👍 / 👎 to inform future reviews.

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.

3 participants