Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replay Video going blank #2552

Open
techieasif opened this issue Jan 7, 2025 · 6 comments
Open

Replay Video going blank #2552

techieasif opened this issue Jan 7, 2025 · 6 comments

Comments

@techieasif
Copy link

Platform

Flutter Mobile Android, Flutter Mobile iOS

Obfuscation

Disabled

Debug Info

Enabled

Doctor

Checking out session replay on our application on flutter_sentry 8.12 sdk version:
configuration:
///Sentry replay experimental
options.experimental.replay.sessionSampleRate = 1.0;
options.experimental.replay.onErrorSampleRate = 1.0;
options.attachScreenshot = true;
options.attachViewHierarchy = true;
options.enableTimeToFullDisplayTracing = true;
options.experimental.privacy.maskAllImages = false;
options.experimental.privacy.maskAllText = false;
options.experimental.privacy.maskAssetImages = false;

Session was recorded, but the video uploaded was blank, on both devices android and ios.
Image

Version

8.12.0

Steps to Reproduce

Run app with shared configuration v8.12

Expected Result

Video should have captured screens and activity.

Actual Result

Image

Are you willing to submit a PR?

None

@vaind
Copy link
Collaborator

vaind commented Jan 7, 2025

Have you tried checking debug logs if there's something pointing what could be wrong? https://docs.sentry.io/platforms/flutter/configuration/options/#debug

@techieasif
Copy link
Author

I have attached detailed logs here https://gist.github.com/techieasif/1374ac4cb345d1ab63db31862535461b @vaind , please have a look:

If needed, we can connect to debug this, we are using sentry for error tracking, we are trying to get replay working for us.

@getsantry getsantry bot moved this to Waiting for: Product Owner in GitHub Issues with 👀 3 Jan 8, 2025
@vaind
Copy link
Collaborator

vaind commented Jan 8, 2025

Thanks for the logs. To me, it looks like the SentryWidget (it enables us to capture replays) is not present in the app. Could you verify? See https://docs.sentry.io/platforms/flutter/enriching-events/screenshots/#enabling-screenshots

@techieasif
Copy link
Author

techieasif commented Jan 9, 2025

Thanks for pointing out the docs @vaind , We are now able to get screenshots and replays every time. but the Video blank issue is still there, I have tested on both Android and IOS. On both platforms replays are going blank.

BTW Screenshot has actual image.

Image

Are there any permissions needed? to make it work?

Few more logs might help you:

[sentry] [warning] ReplayRecorder #2: Widget "_MarkerStack<LineChartPointData, double>" name matches widgets that should usually be masked because they may contain sensitive data. Because this widget comes from a third-party plugin or your code, Sentry doesn't recognize it and can't reliably mask it in release builds (due to obfuscation). Please mask it explicitly using options.experimental.privacy.mask<_MarkerStack<LineChartPointData, double>>(). If you want to silence this warning and keep the widget visible in captures, you can use options.experimental.privacy.unmask<_MarkerStack<LineChartPointData, double>>(). Note: the RegExp matched is: RegExp: pattern=video|webview|password|pinput|camera|chart flags=i (case insensitive).
[sentry] [debug] WidgetFilter skipping invisible: Visibility(hidden, maintainState, maintainAnimation, maintainSize, maintainSemantics, maintainInteractivity)
[sentry] [debug] WidgetFilter skipping invisible: Visibility(hidden, maintainState, maintainAnimation, maintainSize, maintainSemantics, maintainInteractivity)
[sentry] [warning] ReplayRecorder #2: Widget "LineCandleChart-[<'/c/Solana/FKxv3RZ1KJr7GSbEUNNu5HwjjB4R134tEG4vGq7Tpump'>]" name matches widgets that should usually be masked because they may contain sensitive data. Because this widget comes from a third-party plugin or your code, Sentry doesn't recognize it and can't reliably mask it in release builds (due to obfuscation). Please mask it explicitly using options.experimental.privacy.mask<LineCandleChart>(). If you want to silence this warning and keep the widget visible in captures, you can use options.experimental.privacy.unmask<LineCandleChart>(). Note: the RegExp matched is: RegExp: pattern=video|webview|password|pinput|camera|chart flags=i (case insensitive).

[sentry] [debug] ReplayRecorder #2: saving new screenshot to /data/user/0/com.app/cache/sentry/496b4c4f55e88ea1e793cfff6b3a198578b261a0/replay_066bdc8592db417da61f1796b997b4e5/1736404859990.png (414x896 pixels, 98599 bytes)

D/ReflectedParamUpdater(17396): extent() != 1 for single value type: algo.buffers.max-count.values
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: output.subscribed-indices.values
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: input.buffers.allocator-ids.values
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: output.buffers.allocator-ids.values
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: algo.buffers.allocator-ids.values
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: output.buffers.pool-ids.values
[sentry] [debug] WidgetFilter skipping invisible: Visibility(hidden, maintainState, maintainAnimation, maintainSize, maintainSemantics, maintainInteractivity)
D/ReflectedParamUpdater(17396): extent() != 1 for single value type: algo.buffers.pool-ids.values
D/ReflectedParamUpdater(17396): ignored struct field coding.gop.values
D/ReflectedParamUpdater(17396): ignored struct field coding.qp.values
D/CCodecConfig(17396): ignoring local param raw.color (0xc2001809) as it is already supported
I/CCodecConfig(17396): query failed after returning 13 values (BAD_INDEX)
D/CCodecConfig(17396): c2 config diff is Dict {
D/CCodecConfig(17396):   c2::u32 algo.bitrate-mode.value = 3
D/CCodecConfig(17396):   c2::i32 coded.average-qp.value = 0
D/CCodecConfig(17396):   c2::u32 coded.bitrate.value = 64000
[sentry] [debug] WidgetFilter skipping invisible: Visibility(hidden, maintainState, maintainAnimation, maintainSize, maintainSemantics, maintainInteractivity)
D/CCodecConfig(17396):   c2::float coded.frame-rate.value = 1
D/CCodecConfig(17396):   c2::u32 coded.picture-type.value = 0
D/CCodecConfig(17396):   c2::u32 coded.pl.level = 20492
D/CCodecConfig(17396):   c2::u32 coded.pl.profile = 20481
D/CCodecConfig(17396):   c2::u32 coded.vui.color.matrix = 0

D/Sentry  (17396): Capturing session replay: 066bdc8592db417da61f1796b997b4e5

D/Sentry  (17396): Adding Envelope to offline storage: /data/user/0/com./cache/sentry/496b4c4f55e88ea1e793cfff6b3a198578b261a0/41b7c518-34ff-41f4-8acb-11af419dcdf5.envelope
D/Sentry  (17396): Serializing object: {
D/Sentry  (17396): 	"type": "replay_event",
D/Sentry  (17396): 	"replay_type": "session",
D/Sentry  (17396): 	"segment_id": 0,
D/Sentry  (17396): 	"timestamp": "2025-01-09T06:41:00.338Z",
D/Sentry  (17396): 	"replay_id": "066bdc8592db417da61f1796b997b4e5",
D/Sentry  (17396): 	"replay_start_timestamp": "2025-01-09T06:40:55.338Z",
D/Sentry  (17396): 	"urls": [],
D/Sentry  (17396): 	"error_ids": [],
D/Sentry  (17396): 	"trace_ids": [],
D/Sentry  (17396): 	"event_id": "066bdc8592db417da61f1796b997b4e5",
D/Sentry  (17396): 	"contexts": {
D/Sentry  (17396): 		"app": {
D/Sentry  (17396): 			"app_identifier": "com.app",
D/Sentry  (17396): 			"app_name": "app",
D/Sentry  (17396): 			"app_version": "4.0.8",
D/Sentry  (17396): 			"app_build": "3801",
D/Sentry  (17396): 			"permissions": {
D/Sentry  (17396): 				"AD_ID": "granted",
D/Sentry  (17396): 				"INTERNET": "granted",
D/Sentry  (17396): 				"POST_NOTIFICATIONS": "granted",
D/Sentry  (17396): 				"READ_MEDIA_IMAGES": "not_granted",
D/Sentry  (17396): 				"CAMERA": "granted",
D/Sentry  (17396): 				"READ_MEDIA_VISUAL_USER_SELECTED": "not_granted",
D/Sentry  (17396): 				"BIND_GET_INSTALL_REFERRER_SERVICE": "granted",
D/Sentry  (17396): 				"ACCESS_ADSERVICES_AD_ID": "granted",
D/Sentry  (17396): 				"RECEIVE": "granted",
D/Sentry  (17396): 				"DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION": "granted",
D/Sentry  (17396): 				"ACCESS_NETWORK_STATE": "granted",
D/Sentry  (17396): 				"ACCESS_ADSERVICES_ATTRIBUTION": "granted",
D/Sentry  (17396): 				"READ_MEDIA_VIDEO": "not_granted",
D/Sentry  (17396): 				"WAKE_LOCK": "granted",
D/Sentry  (17396): 				"USE_FINGERPRINT": "granted",
D/Sentry  (17396): 				"VIBRATE": "granted",
D/Sentry  (17396): 				"READ_MEDIA_AUDIO": "not_granted",
D/Sentry  (17396): 				"USE_FULL_SCREEN_INTENT": "granted",
D/Sentry  (17396): 				"USE_BIOMETRIC": "granted"
D/Sentry  (17396): 			},
D/Sentry  (17396): 			"in_foreground": true
D/Sentry  (17396): 		},
D/Sentry  (17396): 		"device": {
D/Sentry  (17396): 			"manufacturer": "Google",
D/Sentry  (17396): 			"brand": "google",
D/Sentry  (17396): 			"family": "Pixel",
D/Sentry  (17396): 			"model": "Pixel 7",
D/Sentry  (17396): 			"model_id": "BP11.241121.010",
D/Sentry  (17396): 			"archs": [
D/Sentry  (17396): 				"arm64-v8a"
D/Sentry  (17396): 			],
D/Sentry  (17396): 			"orientation": "portrait",
D/Sentry  (17396): 			"simulator": false,
D/Sentry  (17396): 			"memory_size": 7811391488,
D/Sentry  (17396): 			"screen_width_pixels": 1080,
D/Sentry  (17396): 			"screen_height_pixels": 2201,
D/Sentry  (17396): 			"screen_density": 2.625,
D/Sentry  (17396): 			"screen_dpi": 420,
D/Sentry  (17396): 			"boot_time": "2024-12-19T05:18:36.522Z",
D/Sentry  (17396): 			"timezone": "Asia/Kolkata",
D/Sentry  (17396): 			"id": "5a212cb5-4d1f-4e7b-9eba-b803931d6851",
D/Sentry  (17396): 			"language": "en",
D/Sentry  (17396): 			"locale": "en_US_#u-mu-celsius",
D/Sentry  (17396): 			"processor_count": 8,
D/Sentry  (17396): 			"processor_frequency": 2850.0
D/Sentry  (17396): 		},
D/Sentry  (17396): 		"os": {
D/Sentry  (17396): 			"name": "Android",
D/Sentry  (17396): 			"version": "15",
D/Sentry  (17396): 			"build": "BP11.241121.010",
D/Sentry  (17396): 			"kernel_version": "6.1.99-android14-11-g4981f05faf36-ab12440485",
D/Sentry  (17396): 			"rooted": false
D/Sentry  (17396): 		},
D/Sentry  (17396): 		"trace": {
D/Sentry  (17396): 			"trace_id": "85f2c4347e164ac58388a1373c3a66c0",
D/Sentry  (17396): 			"span_id": "84243c8c1ff34520",
D/Sentry  (17396): 			"op": "default",
D/Sentry  (17396): 			"origin": "manual"
D/Sentry  (17396): 		}
D/Sentry  (17396): 	},
D/Sentry  (17396): 	"sdk": {
D/Sentry  (17396): 		"name": "sentry.java.android.flutter",
D/Sentry  (17396): 		"version": "7.19.0",
D/Sentry  (17396): 		"packages": [
D/Sentry  (17396): 			{
D/Sentry  (17396): 				"name": "maven:io.sentry:sentry",
D/Sentry  (17396): 				"version": "7.19.0"
D/Sentry  (17396): 			},
D/Sentry  (17396): 			{
D/Sentry  (17396): 				"name": "maven:io.sentry:sentry-android-core",
D/Sentry  (17396): 				"version": "7.19.0"
D/Sentry  (17396): 			},
D/Sentry  (17396): 			{
D/Sentry  (17396): 				"name": "maven:io.sentry:sentry-android-ndk",
D/Sentry  (17396): 				"version": "7.19.0"
D/Sentry  (17396): 			},
D/Sentry  (17396): 			{
D/Sentry  (17396): 				"name": "maven:io.sentry:sentry-android-replay",
D/Sentry  (17396): 				"version": "7.19.0"
D/Sentry  (17396): 			}
D/Sentry  (17396): 		],
D/Sentry  (17396): 		"integrations": [
D/Sentry  (17396): 			"UncaughtExceptionHandler",
D/Sentry  (17396): 			"ShutdownHook",
D/Sentry  (17396): 			"SendCachedEnvelope",
D/Sentry  (17396): 			"Ndk",
D/Sentry  (17396): 			"AppLifecycle",
D/Sentry  (17396): 			"ActivityLifecycle",
D/Sentry  (17396): 			"ActivityBreadcrumbs",
D/Sentry  (17396): 			"UserInteraction",
D/Sentry  (17396): 			"AppComponentsBreadcrumbs",
D/Sentry  (17396): 			"Replay",
D/Sentry  (17396): 			"SystemEventsBreadcrumbs",
D/Sentry  (17396): 			"NetworkBreadcrumbs"
D/Sentry  (17396): 		]
D/Sentry  (17396): 	},
D/Sentry  (17396): 	"tags": {
D/Sentry  (17396): 		"isSideLoaded": "true"
D/Sentry  (17396): 	},
D/Sentry  (17396): 	"release": "4.0.8 (3801)",
D/Sentry  (17396): 	"environment": "debug",
D/Sentry  (17396): 	"platform": "java",
D/Sentry  (17396): 	"user": {
D/Sentry  (17396): 		"email": "",
D/Sentry  (17396): 		"id": "42336",
D/Sentry  (17396): 		"ip_address": "{{auto}}",
D/Sentry  (17396): 		"name": "",
D/Sentry  (17396): 	},
D/Sentry  (17396): 	"dist": "3801"
D/Sentry  (17396): }

@getsantry getsantry bot moved this to Waiting for: Product Owner in GitHub Issues with 👀 3 Jan 9, 2025
@vaind
Copy link
Collaborator

vaind commented Jan 9, 2025

Few more logs might help you

Nothing in this log fragment triggers any bells what could be the issue. Could you share the whole log & maybe the replay link?

Also, you could try disabling masking to see if that could be the cause of the problems. Unless you've specified any custom rules, disabling these two defaults would do the trick:

      options.experimental.privacy.maskAllText = false;
      options.experimental.privacy.maskAllImages = false;

@techieasif
Copy link
Author

          options.experimental.replay.sessionSampleRate = 1.0;
          options.experimental.replay.onErrorSampleRate = 1.0;
          options.attachViewHierarchy = true;
          options.enableTimeToFullDisplayTracing = true;
          options.experimental.privacy.maskAllImages = false;
          options.experimental.privacy.maskAllText = false;
          options.experimental.privacy.maskAssetImages = false;
    I have this configuration.

Could you please share your official email, I'll send you the logs and replay on that from my org email. We can continue there on this.

@getsantry getsantry bot moved this to Waiting for: Product Owner in GitHub Issues with 👀 3 Jan 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Waiting for: Product Owner
Status: Needs Discussion
Development

No branches or pull requests

2 participants