qty 和 *nix desktop 的迷惑故事 – Telegram
qty 和 *nix desktop 的迷惑故事
114 subscribers
5 photos
26 links
主要内容如标题(当然也会有别的东西
头像来源 https://news.1rj.ru/str/TouhouBin/18339
Download Telegram
Forwarded from q234rty 🍓
q234rty 🍓
要细节的话就是,我理解 https://gitlab.freedesktop.org/wayland/wayland/-/commit/fd42f70bafa26fcf6f39f034b581b35838be71aa 这个提交假设了 wl_shm 的 version 2 是被定义的(libwayland 自带的 wayland.xml 里定义了),但 qt vendor 了一份自己的 wayland.xml,导致这个提交修改的函数失败了
kwin 6 不再调用 wl_display_init_shm 了所以不受影响
但其实 qtwaylandcompositor 也被这个搞坏了(是 qt 内部的混成器实现,和 kwin 无关)
arch 的解决方法是直接把 qt6 vendor 的 wayland.xml 更新了(
另:telegram-desktop 的小程序在 wayland 下是用 qtwaylandcompositor 实现了一个嵌套 wayland 混成器,再在这个嵌套混成器里跑 webkit2gtk
q234rty 🍓
这个提交假设了 wl_shm 的 version 2 是被定义的(libwayland 自带的 wayland.xml 里定义了),但 qt vendor 了一份自己的 wayland.xml,导致这个提交修改的函数失败了
具体来说,用到 wayland 协议的项目编译时往往会用到 wayland-scanner 或者其类似物,其会从 xml 格式的协议里生成头文件和一些胶水代码,而 wayland.xml 生成的代码里面就定义了 wl_shm_interface 的版本;但在使用了 qt 的混成器里这被 qtwayland 自带的老版本 wayland.xml 生成的代码覆盖了,导致了这个问题。
q234rty 🍓
telegram-desktop 的小程序在 wayland 下是用 qtwaylandcompositor 实现了一个嵌套 wayland 混成器,再在这个嵌套混成器里跑 webkit2gtk
至于 telegram-desktop 为何采用这种技术路线而不是直接使用 qtwebengine,我猜想是为了减小其官方发布的二进制大小(目前 telegram-desktop 会尝试 dlopen 系统上的 libwebkitgtk-6.0.so 等)
Forwarded from Rong布星球 🧶 (Rongron🧊 | g𝐝𝐛)
Debian 的 kwin 软件包已被 rebuild against libwayland 1.23,rebuild 后修复了上述问题。
比较两个版本的 kwin 软件包源代码,可以看到没有任何源代码变更,这是纯粹的 rebuild。

根据 Debian BTS 里的推测,这个 bug 的成因可能是 symbol 冲突:
libkwin 携带了过时的 wl_shm_interface symbol (在 build against 旧版 libwayland 时由 qtwaylandscanner 生成)并且错误地没有 make it private (产生了 symbol leak);
新版 libwayland 携带了更新的 wl_shm_interface ,携带了新的 symbol ;
kwin5 会调用 wl_display_init_shm() ,后者不幸地使用了 libkwin leak 出来的过时的 wl_shm_interface
kwin6 不调用 wl_display_init_shm() ,因此不受影响(并不意味着它一定不 leak symbol,这个问题在两周前才被修复)。

Rebuild 尽管没有从根本上解决上述问题,但是使得 libkwin 携带的将会 leak 的 wl_shm_interface symbol 与 libwayland 携带的 up-to-date 版本一致了,因此不会再触发 segmentation fault 然后 hang 了。
Debian Qt/KDE Maintainers 没有考虑从根本上解决这个问题应该是因为没有必要,毕竟到 KDE Plasma 6.1 的 migration 迟早要发生

目前似乎没有其他 Wayland 混成器(compositor)受影响。
确保你使用的镜像已同步了 kwin-wayland 4:5.27.11-2 ,然后可以 unhold libwayland 并更新它们了。
Forwarded from q234rty 🍓
Rong布星球 🧶
Debian 的 kwin 软件包已被 rebuild against libwayland 1.23,rebuild 后修复了上述问题。 比较两个版本的 kwin 软件包源代码,可以看到没有任何源代码变更,这是纯粹的 rebuild。 根据 Debian BTS 里的推测,这个 bug 的成因可能是 symbol 冲突: libkwin 携带了过时的 wl_shm_interface symbol (在 build against 旧版 libwayland 时由 qtwaylandscanner 生成)并且错误地没有…
确实,后来发现我之前的说法误导了(
kwin 用的是 extra-cmake-modules 来处理 wayland 协议,没有直接链接到 qtwayland,也没有用到 qtwayland 自带的 wayland.xml,所以确实只需要 rebuild
和 telegram-desktop 的情况不一样,后者链接的 libQt6WaylandCompositor.so 里的 wl_shm_interface 符号是由 qtwayland 内置的旧版的 wayland.xml 生成的,所以单纯 rebuild 并不足以修复
Channel name was changed to «qty 和 *nix desktop 的迷惑故事»
不是说频道主会马上 move to FreeBSD,但有 alternative 总是好的,不是吗(
Forwarded from Ziyao Channel | 二代目 (梓瑶 | dt-binding 苦手)
CVE-2024-11477[1] 7zip 的 zstd 实现未正确检查用户输入, 整数下溢可导致任意代码执行, 于 24.07 修复

此问题存在于原始的 7zip 实现中, 该 zstd 算法用于解压 .zst 格式的压缩包以及 zstd 算法压缩的 zip/squashfs/rpm 文件.

https://github.com/mcmilk/7-Zip-zstd/ 使用独立的 zstd 实现, 不受该问题影响[2]

7zip 于 24.01 引入了对 zstd 算法的支持[3]
24.01          2024-01-31
-------------------------
- 7-Zip now can unpack ZSTD archives (.zst filename extension).
- 7-Zip now can unpack ZIP, SquashFS and RPM archives that use ZSTD compression method.

[1]: https://nvd.nist.gov/vuln/detail/CVE-2024-11477
[2]: https://github.com/mcmilk/7-Zip-zstd/issues/384#issuecomment-2501410682
[3]: https://www.7-zip.org/history.txt
🥰6👍1
Forwarded from q234rty 🍓
我终于知道 KDE 系统设置的主题为什么对于 gtk3-demo 做不到实时切换了
Forwarded from q234rty 🍓
q234rty 🍓
我终于知道 KDE 系统设置的主题为什么对于 gtk3-demo 做不到实时切换了
首先 gtk 不支持动态重载 ~/.config/gtk-{3,4}.0/{settings.ini,gtk.css}
Forwarded from q234rty 🍓
然后 kde-gtk-config 在亮暗切的换时候不会修改 gsettings org.gnome.desktop.interface 里的 gtk-theme ,而是单纯修改了 settings.ini 里的 gtk-application-prefer-dark-theme 这个变量
Forwarded from q234rty 🍓
已经在运行的 gtk3 应用是不会检测到这个修改的
Forwarded from q234rty 🍓
实际上 KDE 还修改了 gsettings 里的 color-scheme ,但 gtk3-demo 不读取这个;只有 libhandy/libadwaita 会读取这个
Forwarded from q234rty 🍓
最后就算清除了 settings.ini 中的 gtk-application-prefer-dark-theme 键并且修改了 kde-gtk-config 绕过以上,还有另一个问题:kde 修改了 gtk.css 来支持用户的自定义 color scheme ,这就导致 gtk theme 变动的时候颜色会被这里覆盖
Forwarded from q234rty 🍓
我的绕过方法就直接是清空 ~/.config/gtk-{3,4}.0/gtk.css 完了 chattr +i
既然发频道了还是得说一句:如果你决定按照以上操作那么 you're on your own,不要给上游提 bug(