sentry-dart icon indicating copy to clipboard operation
sentry-dart copied to clipboard

Linux x v9 builds fail; crashpad compile error

Open jpohhhh opened this issue 8 months ago • 8 comments

Platform

Flutter Desktop Linux

Obfuscation

Disabled

Debug Info

Disabled

Doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.32.4, on Ubuntu 20.04.6 LTS 5.15.0-1060-gcp, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Chrome - develop for the web
[✓] Linux toolchain - develop for Linux desktop
    ! Unable to access driver information using 'eglinfo'.
      It is likely available from your distribution (e.g.: apt install mesa-utils)
[✓] Android Studio (version 2022.3)
[✓] Connected device (2 available)
[✓] Network resources

• No issues found!

Version

9.0.0

Steps to Reproduce

  1. Upgrade Sentry package to 9 via flutter pub upgrade --major-versions
  2. Build Linux version of my app (private repo)

Expected Result

Build succeeds.

Actual Result

[   +3 ms] /snap/********/current/usr/bin/clang++  -DAPPLICATION_ID=\"com.********.********\" -DCRASHPAD_FLOCK_ALWAYS_SUPPORTED=1 -DCRASHPAD_LSS_SOURCE_EMBEDDED -DCRASHPAD_ZLIB_SOURCE_SYSTEM -DZLIB_CONST -I_deps/sentry-native-src/external/crashpad -I_deps/sentry-native-src/external/crashpad/third_party/mini_chromium/mini_chromium -I_deps/sentry-native-src/external/crashpad/compat/non_win -I_deps/sentry-native-src/external/crashpad/compat/linux -I_deps/sentry-native-src/external/crashpad/snapshot -I_deps/sentry-native-src/external/crashpad/third_party/mini_chromium -O3 -DNDEBUG -fPIC   -std=gnu++17 -MD -MT _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_extensions.cc.o -MF _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_extensions.cc.o.d -o _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_extensions.cc.o -c _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.cc
[        ] In file included from _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.cc:15:
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:127:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpUTF8String {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:127:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:146:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpByteArray {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:146:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:284:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpRVAList {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:284:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:293:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpSimpleStringDictionaryEntry {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:293:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:304:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpSimpleStringDictionary {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:304:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:313:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpAnnotation {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:313:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:330:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpAnnotationList {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:330:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:353:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpModuleCrashpadInfo {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:353:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:403:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpModuleCrashpadInfoLink {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:403:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:430:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpModuleCrashpadInfoList {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:430:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:449:1: error: declaration of anonymous struct must be a definition
[        ] struct ALIGNAS(4) PACKED MinidumpCrashpadInfo {
[        ] ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.h:449:1: warning: declaration does not declare anything [-Wmissing-declarations]
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.cc:19:20: error: use of undeclared identifier 'MinidumpModuleCrashpadInfo'
[        ] constexpr uint32_t MinidumpModuleCrashpadInfo::kVersion;
[        ]                    ^
[        ] _deps/sentry-native-src/external/crashpad/minidump/minidump_extensions.cc:20:20: error: use of undeclared identifier 'MinidumpCrashpadInfo'
[        ] constexpr uint32_t MinidumpCrashpadInfo::kVersion;
[        ]                    ^
[        ] 11 warnings and 13 errors generated.
[        ] [5/548] Building CXX object _deps/sentry-native-build/crashpad_build/util/CMakeFiles/crashpad_util.dir/file/output_stream_file_writer.cc.o
[  +52 ms] [6/548] Building CXX object _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_byte_array_writer.cc.o
[        ] FAILED: _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_byte_array_writer.cc.o 
[   +3 ms] /snap/********/current/usr/bin/clang++  -DAPPLICATION_ID=\"com.********.********\" -DCRASHPAD_FLOCK_ALWAYS_SUPPORTED=1 -DCRASHPAD_LSS_SOURCE_EMBEDDED -DCRASHPAD_ZLIB_SOURCE_SYSTEM -DZLIB_CONST -I_deps/sentry-native-src/external/crashpad -I_deps/sentry-native-src/external/crashpad/third_party/mini_chromium/mini_chromium -I_deps/sentry-native-src/external/crashpad/compat/non_win -I_deps/sentry-native-src/external/crashpad/compat/linux -I_deps/sentry-native-src/external/crashpad/snapshot -I_deps/sentry-native-src/external/crashpad/third_party/mini_chromium -O3 -DNDEBUG -fPIC   -std=gnu++17 -MD -MT _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_byte_array_writer.cc.o -MF _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_byte_array_writer.cc.o.d -o _deps/sentry-native-build/crashpad_build/minidump/CMakeFiles/crashpad_minidump.dir/minidump_byte_array_writer.cc.o -c _deps/sentry-native-src/external/crashpad/minidump/minidump_byte_array_writer.cc

Are you willing to submit a PR?

No

jpohhhh avatar Jun 18 '25 17:06 jpohhhh

hi this seems to be a crashpad issue, we'll have a look

Can you try setting the SENTRY_NATIVE_BACKEND environment variable to none which should disable crashpad for now and allow compilation

buenaflor avatar Jun 18 '25 17:06 buenaflor

@jpohhhh what clang version are you using? it may be an outdated toolchain problem

buenaflor avatar Jun 18 '25 18:06 buenaflor

Thank you!! --- worked like a charm :)

--- and CI log says Clang 10.0.0 (from 2020!?).

I looked around CHANGELOG a bit, and noticed this was flagged in < 9 already.

Of course, it depends on how y'all feel internally, but my $0.02: this sounds more like my CI provider's problem than Sentry's. I'm a bit stunned I've been using a 5 year old Clang. (though, I'm hardly a Linux expert)

I use CodeMagic for CI, which is relatively popular for Flutter CI, so it might come up again.

Again, just my $0.02, thoughts from how I would have realized quicker what was up: in the migration guide and/or README, note issues with CI's clang versions, and also change the recommended value for "SENTRY_NATIVE_BACKEND" from "an empty string" to "none" (CI silently rejected empty env-vars)

jpohhhh avatar Jun 18 '25 18:06 jpohhhh

Thank you!! --- worked like a charm :)

Glad to hear! But I'm confused which method made it work for you: updating clang or setting the backend to none?

in the migration guide and/or README, note issues with CI's clang versions, and also change the recommended value for "SENTRY_NATIVE_BACKEND" from "an empty string" to "none" (CI silently rejected empty env-vars)

thx for the feedback, will update the docs to make this clearer :)

buenaflor avatar Jun 18 '25 18:06 buenaflor

Ah, good q: I used the env var set to "none"

On Wed, Jun 18, 2025, 2:58 PM Giancarlo Buenaflor @.***> wrote:

buenaflor left a comment (getsentry/sentry-dart#2998) https://github.com/getsentry/sentry-dart/issues/2998#issuecomment-2985383817

Thank you!! --- worked like a charm :)

Glad to hear! But I'm confused which method you used now: updating your toolchain or setting the backend to none?

in the migration guide and/or README, note issues with CI's clang versions, and also change the recommended value for "SENTRY_NATIVE_BACKEND" from "an empty string" to "none" (CI silently rejected empty env-vars)

thx for the feedback, will update the docs to make this clearer :)

— Reply to this email directly, view it on GitHub https://github.com/getsentry/sentry-dart/issues/2998#issuecomment-2985383817, or unsubscribe https://github.com/notifications/unsubscribe-auth/APWVASL2PZCQYCRAV7WTLSD3EGZGLAVCNFSM6AAAAAB7TYTEVSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSOBVGM4DGOBRG4 . You are receiving this because you were mentioned.Message ID: @.***>

jpohhhh avatar Jun 18 '25 20:06 jpohhhh

@JoshuaMoelans just to be safe, is there a recommended clang version for compiling crashpad on linux? afaik sentry-native uses clang 19 for tests

should clang 10 also work theoretically? I haven't seen any minimum versions on the docs

buenaflor avatar Jun 20 '25 10:06 buenaflor

After some investigation, it seems like this compile error stems from clang versions <clang-13; when trying to compile this on clang-10 via Compiler Explorer we get the same warning, but changing it to clang-13 works.

@jpohhhh in case you still want to capture native crashes, you would have to update your clang version to 13 or above.

JoshuaMoelans avatar Jun 23 '25 11:06 JoshuaMoelans

👍 I'll add some docs for that

buenaflor avatar Jun 24 '25 20:06 buenaflor

Updated the docs to include min clang version

buenaflor avatar Jul 10 '25 22:07 buenaflor