Snaps can't be debugged via gdb even in `Debug` builds.
Metadata
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.