Change:
Describe the bug A clear and concise description of what the bug is. To Reproduce Steps to reproduce the behavior: telegram desktop yourself from another account or make a call call crashes Expected behavior Calling works Screenshots Logs Additional context Error in webrtc library Notify maintainers Metadata Please run and paste the result. Maintainer information:
I debuged the issue and found that disabling RTCDCHECKIS_ON fixes the issue (also building in release but it's autoconf so I'm not touching it) Another idea which I'm currently working on is libtgvoip upgrade, as it seems that it wasn't updated since forever (1 year) and the new version has CMake, which automatically gets built as arelease build tdesktop doesn't like the new version
I completely forgot about that package (but I'm not maintaining it so that makes sense :D), sounds like it's time to add an update script for Telegram-Desktop to keep the dependencies in sync. Looking at Telegram-Desktop 2.7.5 currently depends on so maybe that version will work?
CMake seems to be introduced with the very latest commit, so this version doesn't have it yet. Another solution prob is to build libtgvoip in release mode (whatever that is in autotools)
Exactly the same issue as well.
I've just updated Telegram-Desktop to version 2.8.0 including it's dependencies. I wouldn't be surprised if it's still broken though. This issue might also be related to (packaging WebRTC in Nixpkgs is unfortunately extremely difficult, see ).
I have the same issue btw, in group calls.
Same issue with Telegram 2.8.1... <details</details
Hey, I am a bit of a NixOS noob, so excuse my dumb question. How could I apply this patch locally without recompiling the whole repo? I use telegram voice calls to talk with friends and I really need this to work. Thank you very much for your understanding.
should help with that. Personally I'd recommend git-clone + nix-shell/"nix run" but there are different approaches (so choose whatever fits your setup/workflow the best).
I tried the patch from on master (, tdesktop 2.8.1). The original error message is gone, but it still crashed with different error messages when joining a chat room or starting a personal phone call. Note that I didn't have a microphone on my PC, but I'm able to listen-only before. Tested with pulseaudio-only and pipewire-only but with no luck. Start a personal phone call: Entering a group chat:
I encounter the same issue when joining a chat, after applying the patch. I built from (but replaced the telegram and with version 2.8.1), because did not want to compile for me.
is interesting. That should normally only happen if your CPU doesn't support some instruction set extension that (?) requires by default. Could you also paste the output of ? If this instruction comes from (a stack trace might be helpful to track down the source) then we could patch the source to avoid the extension set (a quick grep though the source-code reveals a lot of such conditionals). Edit: Forgot to mention: The instruction could obviously also come from libtgviop or Telegram-Desktop (bundles a lot of 3rd party libraries). A stack trace might be required to track it down (vs. looking though all sources).
Last time we had such crashes with calls it was because webRTC was missing. Instead of packaging vanilla the telegram webRTC fork was packaged. Is that still the case? Also are we building everything as a release and not debug build? The google groups post I linked in the first comment is mentioning that building in release should also fix that issue. Might it be that? Esp with libtgvoip I'm not sure if that flag is enabled
Hi! Sorry for not responding, I was away for a moment. This is the backtrace from gdb. FYI: If you really need voice calls to work you can use the flatpack version on Telegram, there it works no problem.
A funny backtrace. Firstly it calls webrtc functions from tgowt, at the medium of the backtrace it starts to use libtgvoip's webrtcdsp and then it uses destructors from tgowt, again. I don't think two copies of the same library of different versions could really co-exist in one address namespace. Maintainer should allow tdesktop to use bundled libtgvoip that links to tgowt.
could you elaborate what you mean by this? Does that mean we in Nixpkgs should use the bundled from Telegram-Desktop instead of the packaged in Nixpkgs (which is based on the same commit/version)?
Yeah, the difference is that bundled one links to tg_owt while nixpkgs one has its own copy of webrtc
Currently and are both packaged in nixpkgs. But do they really need to be separated packaged? They are only used by .
I guess packaging was required at some point but since says so we can certainly drop it. A PR would be welcome. AFAIK isn't bundled by Telegram-Desktop so that package is likely still required.
libtgvoip was never required, I packaged it for kotatogram at the time when there were no tg_owt and there were no problems with packaged libtgvoip. However, the only working way is using bundled libtgvoip now (or to patch libtgvoip's build scripts). Packaged libtgvoip could still be used for e.g. packaging (if they still using it) with calls support. But the package is here for quite long time and no of other packages started to use it, so maybe it's a good idea to drop it...
Thank you very much for your fix! Telegram desktop now works flawlessly (from the master branch)!
Would be nice to have in !

Discussion:
{ mkDerivation, lib, fetchFromGitHub, callPackage, fetchpatch <del> , pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook, removeReferencesTo </del> <ins> , pkg-config, cmake, ninja, python3, wrapGAppsHook, wrapQtAppsHook </ins> , qtbase, qtimageformats, gtk3, libsForQt5, lz4, xxHash , ffmpeg, openalSoft, minizip, libopus, alsa-lib, libpulseaudio, range-v3 , tl-expected, hunspell, glibmm, webkitgtk, jemalloc <del> , libtgvoip, rnnoise, abseil-cpp, extra-cmake-modules </del> <ins> , rnnoise, extra-cmake-modules </ins> # Transitive dependencies: <del> , pcre, xorg, util-linux, libselinux, libsepol, epoxy </del> <ins> , pcre, xorg, util-linuxMinimal, libselinux, libsepol, epoxy </ins> , at-spi2-core, libXtst, libthai, libdatrie , xdg-utils, libsysprof-capture, libpsl, brotli }:

postPatch = '' substituteInPlace Telegram/CMakeLists.txt  --replace '"''${TDESKTOP_LAUNCHER_BASENAME}.appdata.xml"' '"''${TDESKTOP_LAUNCHER_BASENAME}.metainfo.xml"' <ins> substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioInputALSA.cpp  --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioOutputALSA.cpp  --replace '"libasound.so.2"' '"${alsa-lib}/lib/libasound.so.2"' substituteInPlace Telegram/ThirdParty/libtgvoip/os/linux/AudioPulse.cpp  --replace '"libpulse.so.0"' '"${libpulseaudio}/lib/libpulse.so.0"' </ins> ''; # We want to run wrapProgram manually (with additional parameters) dontWrapGApps = true; dontWrapQtApps = true; <del> nativeBuildInputs = [ pkg-config cmake ninja python3 wrapGAppsHook wrapQtAppsHook removeReferencesTo ]; </del> <ins> nativeBuildInputs = [ pkg-config cmake ninja python3 wrapGAppsHook wrapQtAppsHook extra-cmake-modules ]; </ins> buildInputs = [ qtbase qtimageformats gtk3 libsForQt5.kwayland libsForQt5.libdbusmenu lz4 xxHash ffmpeg openalSoft minizip libopus alsa-lib libpulseaudio range-v3 tl-expected hunspell glibmm webkitgtk jemalloc <del> libtgvoip rnnoise abseil-cpp extra-cmake-modules </del> <ins> rnnoise </ins> tg_owt # Transitive dependencies: <del> pcre xorg.libpthreadstubs xorg.libXdmcp util-linux libselinux libsepol epoxy </del> <ins> util-linuxMinimal # Required for libmount thus not nativeBuildInputs. pcre xorg.libpthreadstubs xorg.libXdmcp libselinux libsepol epoxy </ins> at-spi2-core libXtst libthai libdatrie libsysprof-capture libpsl brotli ];

# We're allowed to used the API ID of the Snap package: "-DTDESKTOP_API_ID=611335" "-DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c" <del> #"-DDESKTOP_APP_SPECIAL_TARGET=""" # TODO: Error when set to "": Bad special target '""' "-DTDESKTOP_LAUNCHER_BASENAME=telegramdesktop" # Note: This is the default </del> <ins> # See: https://github.com/NixOS/nixpkgs/pull/130827#issuecomment-885212649 "-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF" </ins> ]; # Note: The following packages could be packaged system-wide, but it's # probably best to use the bundled ones from tdesktop (Arch does this too): # rlottie: <del> # - CMake flag: "-DTDESKTOP_USE_PACKAGED_TGVOIP=ON" </del> # - Sources (problem: there are no stable releases!): #   - desktop-app (tdesktop): https://github.com/desktop-app/rlottie #   - upstream: https://github.com/Samsung/rlottie # libtgvoip: <del> # - CMake flag: "-DDESKTOP_APP_USE_PACKAGED_RLOTTIE=ON" </del> # - Sources  (problem: the stable releases might be too old!): #   - tdesktop: https://github.com/telegramdesktop/libtgvoip #   - upstream: https://github.com/grishka/libtgvoip

Desktop client for the Telegram messenger, based on the Telegram API and the MTProto secure protocol. ''; <del> license = licenses.gpl3; </del> <ins> license = licenses.gpl3Only; </ins> platforms = platforms.linux; homepage = "https://desktop.telegram.org/"; <del> changelog = "https://github.com/telegramdesktop/tdesktop/releases/tag/v{version}"; maintainers = with maintainers; [ primeos abbradar ]; </del> <ins> changelog = "https://github.com/telegramdesktop/tdesktop/releases/tag/v${version}"; maintainers = with maintainers; [ primeos abbradar oxalica ]; </ins> }; }

{ lib, stdenv, fetchFromGitHub, fetchpatch , pkg-config, cmake, ninja, yasm , libjpeg, openssl, libopus, ffmpeg, alsa-lib, libpulseaudio, protobuf <del> , xorg, libXtst, libXcomposite, libXdamage, libXext, libXrender, libXrandr </del> <ins> , openh264, usrsctp, libevent, libvpx </ins> , glib, abseil-cpp, pcre, util-linuxMinimal, libselinux, libsepol, pipewire <del> , libXi </del> <ins> , xorg, libX11, libXtst, libXcomposite, libXdamage, libXext, libXrender, libXrandr, libXi </ins> }: stdenv.mkDerivation {

buildInputs = [ libjpeg openssl libopus ffmpeg alsa-lib libpulseaudio protobuf <del> xorg.libX11 libXtst libXcomposite libXdamage libXext libXrender libXrandr </del> <ins> openh264 usrsctp libevent libvpx libX11 libXtst libXcomposite libXdamage libXext libXrender libXrandr libXi </ins> glib abseil-cpp pcre util-linuxMinimal libselinux libsepol pipewire <del> libXi </del> ]; cmakeFlags = [ <del> # Building as a shared library isn't officially supported and currently broken: </del> <ins> # Building as a shared library isn't officially supported and may break at any time. </ins> "-DBUILD_SHARED_LIBS=OFF" ]; <del> meta.license = lib.licenses.bsd3; </del> <ins> propagatedBuildInputs = [ # Required for linking downstream binaries. abseil-cpp openh264 usrsctp libevent libvpx ]; meta = with lib; { license = licenses.bsd3; maintainers = with maintainers; [ oxalica ]; }; </ins> }

tg_owt_hash = nix_prefetch_git('https://github.com/desktop-app/tg_owt.git', tg_owt_ref) update_file('tg_owt.nix', tg_owt_version, tg_owt_hash, tg_owt_ref) tg_owt_ref = github_api_request('repos/desktop-app/tg_owt/commits/master')['sha'] <del> libtgvoip_ref = github_api_request(f'repos/telegramdesktop/tdesktop/contents/Telegram/ThirdParty/libtgvoip?ref={tdesktop_tag}')['sha'] libtgvoip_version = get_commit_date('telegramdesktop/libtgvoip', libtgvoip_ref) libtgvoip_hash = nix_prefetch_url(f'https://github.com/telegramdesktop/libtgvoip/archive/{libtgvoip_ref}.tar.gz', unpack=True) update_file('../../../../../development/libraries/libtgvoip/default.nix', libtgvoip_version, libtgvoip_hash, libtgvoip_ref) </del>

<del> { stdenv, lib, fetchFromGitHub, fetchpatch , pkg-config, autoreconfHook , openssl, libopus, alsa-lib, libpulseaudio }: with lib; stdenv.mkDerivation rec { pname = "libtgvoip"; version = "unstable-2021-07-13"; src = fetchFromGitHub { owner = "telegramdesktop"; repo = "libtgvoip"; rev = "f321e7c8cc086bac6ae06fa0934aac7d9833a310"; sha256 = "1gk5nsqhbnn1cdh83b70qr3d3v2c1bncylvgn77vvj8vnyjlmnfq"; }; # To fix the build without external webrtc: patches = [ (fetchpatch { # Use methods from updated webrtc. url = "https://github.com/telegramdesktop/libtgvoip/commit/13a5fcb16b04472d808ce122abd695dbf5d206cd.patch"; sha256 = "0wapqvml3yyv5dlp2q8iih5rfvfnkngll69krhnw5xsdjy22sp7r"; revert = true; }) (fetchpatch { # Allow working with external webrtc. url = "https://github.com/telegramdesktop/libtgvoip/commit/6e82b6e45664c1f80b9039256c99bebc76d34672.patch"; sha256 = "0m87ixja70vnm80a9z4gxk0yl7n64y59smczxb88lxnj6kdgih7x"; revert = true; }) ]; outputs = [ "out" "dev" ]; nativeBuildInputs = [ pkg-config autoreconfHook ]; buildInputs = [ openssl libopus alsa-lib libpulseaudio ]; enableParallelBuilding = true; meta = { description = "VoIP library for Telegram clients"; license = licenses.unlicense; platforms = platforms.linux; homepage = "https://github.com/telegramdesktop/libtgvoip"; maintainers = with maintainers; [ ilya-fedin ]; }; } </del>

libtap = callPackage ../development/libraries/libtap { }; <del> libtgvoip = callPackage ../development/libraries/libtgvoip { }; </del> libtsm = callPackage ../development/libraries/libtsm { }; libgeotiff = callPackage ../development/libraries/libgeotiff { };