Spectacle crashes when I try to use it after 2025-12-22 Stable Update

I’ve just noticed that Spectacle crashes when I try to use it.
Running from the command-line, I see

$ spectacle
spectacle: error while loading shared libraries: libavcodec.so.61: cannot open shared object file: No such file or directory

libavcodec is provided by ffmpeg, which was upgraded in this update, whereas spectacle wasn’t (and isn’t included in the package list).

My guess is that the underlying problem is that ffmpeg isn’t shown as being a dependency of spectacle, which would explain why it wasn’t rebuilt.

Are you sure that your mirrors & system are are fully synced? Both ffmpeg and spectacle are the same version across all branches:

mbn info ffmpeg -q | grep -Ev 'Name|Repository|Packager'
Branch         : archlinux
Version        : 2:8.0.1-2
Build Date     : Wed 10 Dec 2025 10:14:44 
Branch         : unstable
Version        : 2:8.0.1-2
Build Date     : Wed 10 Dec 2025 10:14:44 
Branch         : testing
Version        : 2:8.0.1-2
Build Date     : Wed 10 Dec 2025 10:14:44 
Branch         : stable
Version        : 2:8.0.1-2
Build Date     : Wed 10 Dec 2025 10:14:44 
mbn info spectacle -q | grep -Ev 'Name|Repository|Packager'
Branch         : archlinux
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 23:30:04 
Branch         : unstable
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 23:30:04 
Branch         : testing
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 23:30:04 
Branch         : stable
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 23:30:04 

mbn can be found in the manjaro-check-repos package

I have libavcodec.so.62 on my fully-synced (Testing branch) system. Your Stable branch system should have the same since all Manjaro branches are currently the same for those packages:

locate /usr/lib/libavcodec 
/usr/lib/libavcodec.so
/usr/lib/libavcodec.so.62
/usr/lib/libavcodec.so.62.11.100
1 Like

I just installed for the test, and spectacle run. Stable branch here but since the versions are the same it shouldn’t matter.

Did you look at the dates on your output? It looks like you haven’t updated the mbn database since February. Make sure you run the following command first:

mbn update

or, to force a refresh of all databases:

mbn update --force
3 Likes

Thanks. I forgot the thing has its own databases. (i had to start with sudo mbn rm actually)

2 Likes

Curious…

$ mbn info ffmpeg -q | grep -Ev 'Name|Repository|Packager'
Branch         : archlinux
Version        : 2:8.0.1-2
Build Date     : Tue 09 Dec 2025 23:14:44
Branch         : unstable
Version        : 2:8.0.1-2
Build Date     : Tue 09 Dec 2025 23:14:44
Branch         : testing
Version        : 2:8.0.1-2
Build Date     : Tue 09 Dec 2025 23:14:44
Branch         : stable
Version        : 2:8.0.1-2
Build Date     : Tue 09 Dec 2025 23:14:44
$ mbn info spectacle -q | grep -Ev 'Name|Repository|Packager'
Branch         : archlinux
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 12:30:04
Branch         : unstable
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 12:30:04
Branch         : testing
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 12:30:04
Branch         : stable
Version        : 1:6.5.4-1
Build Date     : Tue 09 Dec 2025 12:30:04

Which shows my ffmpeg on all branches having been built the day before yours, but supposedly being the same version. (I did sudo mbn update first so the database got populated)
And then

$  pacman -Ql ffmpeg|grep libavcodec.so.6*
ffmpeg /usr/lib/libavcodec.so.62
ffmpeg /usr/lib/libavcodec.so.62.11.100

So no sign of libavcodec.so.61.

I’ve checked my mirrors, and all UK ones are showing up-to-date. I’ve tried doing a reinstall on both packages in case that helped, but sadly not. Puzzling.

No. It just shows that my timezone, Sydney, Australia (AEDT) is 11 hours ahead of your time zone (GMT).

1 Like

OOPS! I didn’t think about timezones. What an idiot!

2 Likes

Maybe double check the installed version of spectacle by running:

spectacle -v

or

pamac info spectacle

Also, did you reboot after the update? Not rebooting (or, at the least, logging out & back in to the desktop environment) is a fairly common cause of applications looking for the wrong versions of libraries after a system update.

Off-topic:-

I’ve encountered several users that simply will not reboot their machines under any circumstances, and then they wonder why things go wrong, or blame the distribution.

In as far as I can determine, their sole reasoning is that rebooting is inconvenient for them. :man_shrugging:

3 Likes
$ spectacle -v
spectacle: error while loading shared libraries: libavcodec.so.61: cannot open shared object file: No such file or directory
$ pamac info spectacle
Name                  : spectacle
Version               : 1:6.5.4-1
Description           : KDE screenshot capture utility
URL                   : https://kde.org/plasma-desktop/
Licences              : GPL-2.0-or-later
Repository            : extra
Installed Size        : 6.7 MB
[...]

Which certainly appears to be the right version. Yes, I did reboot; it’s always the first thing I do after any update apart from sorting out .pacnew files.

Doing a bit of digging, it seems even more curious. I thought the simple way to fix things at least temporarily would be to restore the library files from the backup I took before the upgrade, but libavcodec.so.61 wasn’t in there. Admittedly I don’t use spectacle very often so it’s quite possible this is the first time I’ve used it since the previous backup. Restoring from a backup on December 7th, just results in spectacle complaining about another library from ffmpeg (and another when I restore that). So clearly it’s the Spectacle package rather than ffmpeg where the problem lies. Though looking at its package file in the cache, it seems to date from December 9th, which appears correct.

I’m beginning to think it’s a good thing I don’t use it very often :grin:

pacman -Qi spectacle ffmpeg; ldd /usr/bin/spectacle
2 Likes

The above command can be slightly modified to make reading the output a little easier. To sort the final command so that the list of linked libraries is in alphabetical order:

pacman -Qi spectacle ffmpeg; ldd /usr/bin/spectacle | sort

or, to get just the libavcodec linked library info:

pacman -Qi spectacle ffmpeg; ldd /usr/bin/spectacle | grep libavcodec
1 Like
$ pacman -Qi spectacle ffmpeg; ldd /usr/bin/spectacle | grep libavcodec
Name            : spectacle
Version         : 1:6.5.4-1
Description     : KDE screenshot capture utility
Architecture    : x86_64
URL             : https://kde.org/plasma-desktop/
Licenses        : GPL-2.0-or-later
Groups          : plasma
Provides        : None
Depends On      : gcc-libs  glibc  kconfig  kconfigwidgets  kcoreaddons  kcrash  kdbusaddons  kglobalaccel
kguiaddons  ki18n  kio  kirigami  kjobwidgets  knotifications  kpipewire  kservice
kstatusnotifieritem  kwidgetsaddons  kwindowsystem  kxmlgui  layer-shell-qt  libxcb  opencv
prison  purpose  qt6-base  qt6-declarative  qt6-imageformats  qt6-multimedia  wayland  xcb-util
xcb-util-cursor  xcb-util-image
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 6.34 MiB
Packager        : Antonio Rojas <arojas@archlinux.org>
Build Date      : Tue 09 Dec 2025 12:30:04 GMT
Install Date    : Sun 28 Dec 2025 13:15:07 GMT
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

Name            : ffmpeg
Version         : 2:8.0.1-2
Description     : Complete solution to record, convert and stream audio and video
Architecture    : x86_64
URL             : https://ffmpeg.org
Licenses        : GPL-3.0-only
Groups          : None
Provides        : libavcodec.so=62-64  libavdevice.so=62-64  libavfilter.so=11-64  libavformat.so=62-64
libavutil.so=60-64  libswresample.so=6-64  libswscale.so=9-64
Depends On      : alsa-lib  aom  bzip2  cairo  dav1d  fontconfig  freetype2  fribidi  glib2  glibc  glslang  gmp
gnutls  gsm  harfbuzz  jack  lame  libass  libavc1394  libbluray  libbs2b  libdrm  libdvdnav
libdvdread  libgl  libiec61883  libjxl  libmodplug  libopenmpt  libplacebo  libpulse  libraw1394
librsvg  libsoxr  libssh  libtheora  libva  libvdpau  libvorbis  libvpx  libwebp  libx11  libxcb
libxext  libxml2  libxv  ocl-icd  onevpl  opencore-amr  openjpeg2  opus  rav1e  rubberband  sdl2
snappy  speex  srt  svt-av1  v4l-utils  vapoursynth  vid.stab  vmaf  vulkan-icd-loader  x264
x265  xvidcore  xz  zeromq  zimg  zlib  libass.so=9-64  libbluray.so=3-64  libbs2b.so=0-64
libdav1d.so=7-64  libfreetype.so=6-64  libharfbuzz.so=0-64  libjxl.so=0.11-64  libopenmpt.so=0-64
libplacebo.so=351-64  librav1e.so=0.8-64  librsvg-2.so=2-64  librubberband.so=3-64  libva.so=2-64
libva-drm.so=2-64  libva-x11.so=2-64  libvidstab.so=1.2-64  libvorbisenc.so=2-64
libvorbis.so=0-64  libvpx.so=11-64  libx264.so=165-64  libx265.so=215-64  libxvidcore.so=4-64
libzimg.so=2-64  libzmq.so=5-64
Optional Deps   : avisynthplus: AviSynthPlus support
frei0r-plugins: Frei0r video effects support
intel-media-sdk: Intel QuickSync support (legacy)
ladspa: LADSPA filters [installed]
nvidia-utils: Nvidia NVDEC/NVENC support
onevpl-intel-gpu: Intel QuickSync support
Required By     : aubio  audacious-plugins  chromaprint  firefox  gst-libav  k3b  kfilemetadata  kpipewire  makemkv
mencoder  motion  mpd  mplayer  mpv  opencv  qt6-multimedia-ffmpeg  qt6-webengine  scrcpy  sox
unpaper  xine-lib
Optional For    : alsa-plugins  audacity  gegl  get_iplayer  libde265  libheif  libquicktime  ripgrep-all
youtube-dl
Conflicts With  : None
Replaces        : None
Installed Size  : 46.51 MiB
Packager        : Robin Candau <antiz@archlinux.org>
Build Date      : Tue 09 Dec 2025 23:14:44 GMT
Install Date    : Sun 28 Dec 2025 12:47:11 GMT
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

libavcodec.so.61 => not found

And then

$ ldd /usr/bin/spectacle | grep "not found"

libavcodec.so.61 => not found
libavutil.so.59 => not found
libavformat.so.61 => not found
libavfilter.so.10 => not found

So it appears that ffmpeg is providing a range of these libraries (for example libavcodec.so=62-64), all of which just miss what Spectacle wants. Though curiously, so does the previous version in my cache (8.0.1-1). Odd that Spectacle doesn’t have ffmpeg in its dependency list…

However, this list tells me what libraries I need to grab from an old backup, then stick them in /usr/local/lib.

I must admit that I am starting to feel a little stumped as to why your installation of the latest version of spectacle is trying to link to outdated ffmpeg libraries. It almost feels as though the latest binary was not installed on your system, even though pacman/pamac say it was. I’m starting to wonder if the pacman database was updated, but the new binary wasn’t actually written to the disk.

Maybe check the actual size & date of the binary file by running the following command:

ls -l /usr/bin/spectacle

This is the result I got on my machine:

ls -l /usr/bin/spectacle 
-rwxr-xr-x 1 root root 3168488 Dec  9 23:30 /usr/bin/spectacle

Yours should match the size, but remember your time should say 12:30 as I’m 11 hours ahead of you.

For unknown reasons this isn’t the right version of spectacle. So remove it with the package manager and afterwards install it again.

-rwxr-xr-x 1 root root 3168488 Dec 9 12:30 /usr/bin/spectacle

Utterly weird. I’m going to give up on this as nothing makes sense. And as I don’t use it very often and can always grab any screenshot I need using GIMP, it’s not worth any more effort. It’ll probably start working after the next update.

1 Like

I’ve already tried that. And also verified that version (and exact filesize) matches what others have. I’m giving up on this one, as it’s not something I desperately need.

The version is reported by the package manager, not the executable you try to run and the file system’s entry about the file size doesn’t tell you much. Perhaps you didn’t clean the download cache. One can also download the package directly from a mirror and install it via pacman -U but don’t forget to remove the installed package beforehand.