← Back to issue list

Snaps can't be debugged via gdb even in `Debug` builds.

View original Github issue

Metadata

Project
snapcraft
Number
#5652
Type
issue
State
open
Author
ofry
Labels
Type: Research Status: Needs information
Created
2025-07-28 16:30:46+00:00
Updated
2025-08-24 08:14:51+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

### Bug Description I replaced `-DCMAKE_BUILD_TYPE` to `Debug` and remove `-s` from `LDFLAGS` on `snapcraft.yaml` from https://github.com/telegramdesktop/tdesktop But it still can't be debugged. ### To Reproduce ``` git clone https://github.com/telegramdesktop/tdesktop cd ./tdesktop ``` Replace `snapcraft.yaml` to code below. ``` snapcraft ``` After build is complete: ``` sudo snap install --dangerous _recently_built_snap_.snap snap run --gdbserver telegram-desktop ``` In second terminal: ``` gdb -ex="target remote :..." -ex=continue -ex="signal SIGCONT" ``` ### Environment snapd 2.70 snapcraft 8.10.2 KUbuntu 25.04 ### snapcraft.yaml ```yaml name: telegram-desktop adopt-info: telegram base: core24 grade: stable confinement: strict compression: lzo apps: telegram-desktop: command: usr/bin/telegram-desktop common-id: org.telegram.desktop desktop: usr/share/applications/org.telegram.desktop.desktop autostart: telegram-desktop_telegram-desktop.desktop extensions: [gnome] plugs: - audio-playback - audio-record - camera - hardware-observe - home - network - network-bind - network-status - removable-media - unity7 slots: - mpris parts: telegram: plugin: cmake source: . source-type: git parse-info: [usr/share/metainfo/org.telegram.desktop.metainfo.xml] build-environment: - LD_LIBRARY_PATH: $CRAFT_STAGE/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} - LDFLAGS: ${LDFLAGS:+$LDFLAGS} -Wl,-push-state,-no-as-needed,-ldav1d,-lhwy,-pop-state cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/ - -DTDESKTOP_API_ID=611335 - -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c override-pull: | craftctl default version_file=Telegram/build/version version=$(sed -n "s/AppVersionStr[ ]\+\(.*\)\+/\1/p" $version_file) beta=$(sed -n "s/BetaChannel[ ]\+\(.*\)\+/\1/p" $version_file) if [ "$beta" != "0" ]; then version="$version-beta" fi version="${version}$(git describe --tags | sed 's,^v[^-]\+,,')" craftctl set version="$version" override-build: | craftctl default mv "$CRAFT_PART_INSTALL"/usr/bin/{Telegram,telegram-desktop} APP_ID=org.telegram.desktop sed -i "s/^Icon=$APP_ID$/Icon=snap.telegram-desktop./g" "$CRAFT_PART_INSTALL/usr/share/applications/$APP_ID.desktop" for i in $(find "$CRAFT_PART_INSTALL/usr/share/icons" -name "$APP_ID*.svg" -o -name "$APP_ID*.png"); do PREFIXED="$(dirname "$i")/snap.$CRAFT_PROJECT_NAME.$(basename "$i" | sed "s/$APP_ID//")" mv "$i" "$PREFIXED" DEST="$(dirname "$i" | sed 's@usr/share@meta/gui@')" mkdir -p "$DEST" cp -r "$PREFIXED" "$DEST" done after: - ada - avif - ffmpeg - geoclue - jpegli - openal - protobuf - qt - rnnoise - tde2e - webrtc pkgs: plugin: nil build-packages: - clang - gperf - nasm - wget - libboost-regex-dev - libdav1d-dev - libheif-dev - libhwy-dev - libjxl-dev - libopenh264-dev - libopus-dev - libpipewire-0.3-dev - libssl-dev - libvdpau-dev - libvpx-dev - libxcb-cursor-dev - libxcb-glx0-dev - libxcb-icccm4-dev - libxcb-image0-dev - libxcb-keysyms1-dev - libxcb-randr0-dev - libxcb-record0-dev - libxcb-render-util0-dev - libxcb-screensaver0-dev - libxcb-shape0-dev - libxcb-sync-dev - libxcb-util-dev - libxcb-xfixes0-dev - libxcb-xkb-dev - libxkbcommon-x11-dev - libxv-dev stage-packages: - libopenh264-7 - libxcb-cursor0 - libxcb-glx0 - libxcb-randr0 - libxcb-record0 - libxcb-screensaver0 - libxcb-sync1 - libxcb-xfixes0 patches: source: https://github.com/desktop-app/patches.git source-depth: 1 source-commit: 1ffcb17817a2cab167061d530703842395291e69 plugin: dump override-pull: | craftctl default cp -r . "$CRAFT_STAGE/patches" override-prime: | rm -rf patches stage: [-./*] ada: source: https://github.com/ada-url/ada.git source-depth: 1 source-tag: v3.2.4 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DADA_TESTING=OFF - -DADA_TOOLS=OFF - -DADA_INCLUDE_URL_PATTERN=OFF prime: [-./*] avif: source: https://github.com/AOMediaCodec/libavif.git source-depth: 1 source-tag: v1.3.0 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DBUILD_SHARED_LIBS=OFF - -DAVIF_CODEC_DAV1D=SYSTEM - -DAVIF_LIBYUV=OFF prime: [-./*] after: - pkgs ffmpeg: source: https://github.com/FFmpeg/FFmpeg.git source-depth: 1 source-branch: n6.1.1 plugin: autotools autotools-configure-parameters: - --prefix=/usr - --libdir=/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR - --extra-cflags="-DCONFIG_SAFE_BITSTREAM_READER=1" - --extra-cxxflags="-DCONFIG_SAFE_BITSTREAM_READER=1" - --disable-debug - --disable-programs - --disable-doc - --disable-network - --disable-autodetect - --disable-everything - --enable-libdav1d - --enable-libopenh264 - --enable-libopus - --enable-libvpx - --enable-vaapi - --enable-vdpau - --enable-xlib - --enable-libdrm - --enable-ffnvcodec - --enable-nvdec - --enable-cuvid - --enable-protocol=file - --enable-hwaccel=av1_vaapi - --enable-hwaccel=av1_nvdec - --enable-hwaccel=h264_vaapi - --enable-hwaccel=h264_vdpau - --enable-hwaccel=h264_nvdec - --enable-hwaccel=hevc_vaapi - --enable-hwaccel=hevc_vdpau - --enable-hwaccel=hevc_nvdec - --enable-hwaccel=mpeg2_vaapi - --enable-hwaccel=mpeg2_vdpau - --enable-hwaccel=mpeg2_nvdec - --enable-hwaccel=mpeg4_vaapi - --enable-hwaccel=mpeg4_vdpau - --enable-hwaccel=mpeg4_nvdec - --enable-hwaccel=vp8_vaapi - --enable-hwaccel=vp8_nvdec - --enable-decoder=aac - --enable-decoder=aac_fixed - --enable-decoder=aac_latm - --enable-decoder=aasc - --enable-decoder=ac3 - --enable-decoder=alac - --enable-decoder=av1 - --enable-decoder=av1_cuvid - --enable-decoder=eac3 - --enable-decoder=flac - --enable-decoder=gif - --enable-decoder=h264 - --enable-decoder=hevc - --enable-decoder=libdav1d - --enable-decoder=libvpx_vp8 - --enable-decoder=libvpx_vp9 - --enable-decoder=mp1 - --enable-decoder=mp1float - --enable-decoder=mp2 - --enable-decoder=mp2float - --enable-decoder=mp3 - --enable-decoder=mp3adu - --enable-decoder=mp3adufloat - --enable-decoder=mp3float - --enable-decoder=mp3on4 - --enable-decoder=mp3on4float - --enable-decoder=mpeg4 - --enable-decoder=msmpeg4v2 - --enable-decoder=msmpeg4v3 - --enable-decoder=opus - --enable-decoder=pcm_alaw - --enable-decoder=pcm_f32be - --enable-decoder=pcm_f32le - --enable-decoder=pcm_f64be - --enable-decoder=pcm_f64le - --enable-decoder=pcm_lxf - --enable-decoder=pcm_mulaw - --enable-decoder=pcm_s16be - --enable-decoder=pcm_s16be_planar - --enable-decoder=pcm_s16le - --enable-decoder=pcm_s16le_planar - --enable-decoder=pcm_s24be - --enable-decoder=pcm_s24daud - --enable-decoder=pcm_s24le - --enable-decoder=pcm_s24le_planar - --enable-decoder=pcm_s32be - --enable-decoder=pcm_s32le - --enable-decoder=pcm_s32le_planar - --enable-decoder=pcm_s64be - --enable-decoder=pcm_s64le - --enable-decoder=pcm_s8 - --enable-decoder=pcm_s8_planar - --enable-decoder=pcm_u16be - --enable-decoder=pcm_u16le - --enable-decoder=pcm_u24be - --enable-decoder=pcm_u24le - --enable-decoder=pcm_u32be - --enable-decoder=pcm_u32le - --enable-decoder=pcm_u8 - --enable-decoder=pcm_zork - --enable-decoder=vorbis - --enable-decoder=vp8 - --enable-decoder=wavpack - --enable-decoder=wmalossless - --enable-decoder=wmapro - --enable-decoder=wmav1 - --enable-decoder=wmav2 - --enable-decoder=wmavoice - --enable-encoder=aac - --enable-encoder=libopenh264 - --enable-encoder=libopus - --enable-encoder=pcm_s16le - --enable-filter=atempo - --enable-parser=aac - --enable-parser=aac_latm - --enable-parser=flac - --enable-parser=gif - --enable-parser=h264 - --enable-parser=hevc - --enable-parser=mpeg4video - --enable-parser=mpegaudio - --enable-parser=opus - --enable-parser=vorbis - --enable-demuxer=aac - --enable-demuxer=flac - --enable-demuxer=gif - --enable-demuxer=h264 - --enable-demuxer=hevc - --enable-demuxer=matroska - --enable-demuxer=m4v - --enable-demuxer=mov - --enable-demuxer=mp3 - --enable-demuxer=ogg - --enable-demuxer=wav - --enable-muxer=mp4 - --enable-muxer=ogg - --enable-muxer=opus - --enable-muxer=wav override-pull: | craftctl default sed -i 's/disable ffnvcodec cuvid nvdec nvenc/:/g' configure prime: [-./*] after: - nv-codec-headers - pkgs geoclue: plugin: nil stage-packages: - libgeoclue-2-0 stage: - ./usr/lib/x86_64-linux-gnu/libgeoclue-2.so* jpegli: source: https://github.com/libjxl/libjxl.git source-depth: 1 source-tag: v0.11.1 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DBUILD_SHARED_LIBS=OFF - -DBUILD_TESTING=OFF - -DJPEGXL_ENABLE_DEVTOOLS=OFF - -DJPEGXL_ENABLE_TOOLS=OFF - -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON - -DJPEGXL_ENABLE_DOXYGEN=OFF - -DJPEGXL_ENABLE_MANPAGES=OFF - -DJPEGXL_ENABLE_BENCHMARK=OFF - -DJPEGXL_ENABLE_EXAMPLES=OFF - -DJPEGXL_ENABLE_JNI=OFF - -DJPEGXL_ENABLE_SJPEG=OFF - -DJPEGXL_ENABLE_OPENEXR=OFF - -DJPEGXL_ENABLE_SKCMS=OFF - -DJPEGXL_FORCE_SYSTEM_BROTLI=ON - -DJPEGXL_FORCE_SYSTEM_LCMS2=ON - -DJPEGXL_FORCE_SYSTEM_HWY=ON override-build: | craftctl default cp lib/libjpegli-static.a "$CRAFT_PART_INSTALL"/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.a ar rcs "$CRAFT_PART_INSTALL"/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.a lib/CMakeFiles/jpegli-libjpeg-obj.dir/jpegli/libjpeg_wrapper.cc.o stage: - ./usr/include/jconfig.h - ./usr/include/jmorecfg.h - ./usr/include/jpeglib.h - ./usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libjpeg.a prime: [-./*] after: - pkgs openal: source: https://github.com/kcat/openal-soft.git source-depth: 1 source-tag: 1.24.3 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DLIBTYPE=STATIC - -DALSOFT_DLOPEN=OFF - -DALSOFT_EXAMPLES=OFF - -DALSOFT_UTILS=OFF - -DALSOFT_INSTALL_CONFIG=OFF - -DALSOFT_BACKEND_PIPEWIRE=OFF prime: [-./*] after: - pkgs nv-codec-headers: source: https://github.com/FFmpeg/nv-codec-headers.git source-depth: 1 source-branch: n12.1.14.0 plugin: make make-parameters: - PREFIX=/usr - LIBDIR=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR prime: [-./*] protobuf: source: https://github.com/protocolbuffers/protobuf.git source-depth: 1 source-tag: v30.2 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -Dprotobuf_BUILD_TESTS=OFF prime: [-./*] after: - pkgs qt: source: https://github.com/qt/qt5.git source-depth: 1 source-tag: v6.9.1 source-submodules: - qtbase - qtdeclarative - qtimageformats - qtshadertools - qtsvg - qtwayland plugin: cmake build-environment: - LDFLAGS: ${LDFLAGS:+$LDFLAGS} -Wl,-push-state,-no-as-needed,-lhwy,-pop-state cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DINSTALL_LIBDIR=/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR - -DBUILD_SHARED_LIBS=OFF - -DQT_QPA_PLATFORMS="wayland;xcb" - -DFEATURE_eglfs=OFF - -DINPUT_openssl=linked override-pull: | craftctl default QT="$(grep 'set(QT_REPO_MODULE_VERSION' qtbase/.cmake.conf | sed -r 's/.*"(.*)".*/\1/')" cd qtbase find $CRAFT_STAGE/patches/qtbase_${QT} -type f -print0 | sort -z | xargs -r0 git apply cd ../qtwayland find $CRAFT_STAGE/patches/qtwayland_${QT} -type f -print0 | sort -z | xargs -r0 git apply cd .. prime: [-./*] after: - jpegli - patches - pkgs rnnoise: source: https://github.com/xiph/rnnoise.git source-depth: 1 source-tag: v0.2 plugin: autotools autotools-configure-parameters: - --prefix=/usr - --libdir=\${exec_prefix}/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR - --disable-shared - --disable-examples - --disable-doc override-pull: | craftctl default sed -i 's/os_support.h/common.h/g;s/OPUS_CLEAR/RNN_CLEAR/g' src/vec{,_neon}.h prime: [-./*] after: - pkgs systemd: plugin: nil stage-packages: - systemd stage: - ./usr/bin/systemd-detect-virt tde2e: source: https://github.com/tdlib/td.git source-depth: 1 source-commit: 51743dfd01dff6179e2d8f7095729caa4e2222e9 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr - -DCMAKE_INSTALL_LIBDIR=lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR - -DTD_E2E_ONLY=ON prime: [-./*] after: - pkgs webrtc: source: https://github.com/desktop-app/tg_owt.git source-depth: 1 source-commit: 62321fd7128ab2650b459d4195781af8185e46b5 plugin: cmake cmake-generator: Ninja cmake-parameters: - -DCMAKE_BUILD_TYPE=Debug - -DCMAKE_INSTALL_PREFIX=/usr prime: [-./*] after: - ffmpeg - jpegli - pkgs ``` ### Relevant log output ```shell ofry@ofry-virtual-machine:~$ gdb -ex="target remote :44805" -ex=continue -ex="signal SIGCONT" GNU gdb (Ubuntu 16.2-8ubuntu1) 16.2 Copyright (C) 2024 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <https://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". Remote debugging using :44805 Reading /usr/lib/snapd/snap-gdbserver-shim from remote target... warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead. Reading /usr/lib/snapd/snap-gdbserver-shim from remote target... Reading symbols from target:/usr/lib/snapd/snap-gdbserver-shim... (No debugging symbols found in target:/usr/lib/snapd/snap-gdbserver-shim) 0x000000000041caec in ?? () Continuing. Program received signal SIGSTOP, Stopped (signal). 0x000000000041caec in ?? () Continuing with signal SIGCONT. Program received signal SIGTRAP, Trace/breakpoint trap. 0x000000000041caec in ?? () (gdb) break wl_egl_window_destroy Function "wl_egl_window_destroy" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (wl_egl_window_destroy) pending. (gdb) cont Continuing. process 1019236 is executing new program: /snap/telegram-desktop/x1/usr/bin/telegram-desktop Reading /snap/telegram-desktop/x1/usr/bin/telegram-desktop from remote target... warning: "target:/snap/telegram-desktop/x1/usr/bin/telegram-desktop": not in executable format: file format not recognized Reading /snap/telegram-desktop/x1/usr/bin/telegram-desktop from remote target... warning: `target:/snap/telegram-desktop/x1/usr/bin/telegram-desktop': can't read symbols: file format not recognized. [New Thread 1019236.1019528] Thread 2 "telegram-deskto" received signal SIGSTOP, Stopped (signal). [Switching to Thread 1019236.1019528] 0x00007b85e8be0c2d in ?? () (gdb) bt #0 0x00007b85e8be0c2d in ?? () #1 0x0000000000000000 in ?? () ``` ### Additional context _No response_

Evaluation history

No evaluation history available.