推 LinBuoRen: 沒 DBus? 11/06 23:53
推 lantw44: 嘗試把 $XDG_RUNTIME_DIR 指向的地方掛進去? 11/07 00:11
試過了,但 $XDG_RUNTIME_DIR 是空的,結果一樣。
→ galic: 應該是container也要能連到host的dbus 11/07 00:27
--net=host
就是為了dbus 加的,參考網址如下:(抱歉,我就不特別縮了)
http://ask.projectatomic.io/en/question/3647/how-to-connect-to-session-dbus-from-a-docker-container/?answer=3648#post-id-3648
後來發現 docker 內的 dbus 沒啟動,在
/etc/init.d/dbus start
好像可以連上 dbus ,但仍會 Segmentation fault
(所以此時 dbus 是 host 的還是 container 的?)
※ 編輯: sppmg (36.231.173.247), 11/07/2017 14:23:13
推 galic: 我剛閒著幫你測了一下 跟dbus沒關聯 我用跟你一樣的指令啟 11/07 18:32
→ galic: 動 出現一樣的錯誤訊息 但是kdevelop 還是正常開啟 11/07 18:32
→ galic: 你用gdb run看看 segmentation fault之後印一下backtrace 11/07 18:36
→ sppmg: 太感謝了,我明天試試 11/08 00:22
→ sppmg: 對了,今天想到會不會和host太舊有關? 我os是Debian 7 ,k 11/08 00:25
→ sppmg: ernel 升到 3.16 ,不清楚 docker 虛擬化能否處理差異這麼 11/08 00:25
→ sppmg: 大的情況 11/08 00:25
回報一下剛剛的測試結果:
gdb 執行結果:(完整結果請見 https://pastebin.com/d95yfCk8 )
Thread 1 "kdevelop" received signal SIGSEGV, Segmentation fault.
__memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/../multiarch/memmove-vec-unaligned-erms.S:325
325 ../sysdeps/x86_64/multiarch/../multiarch/memmove-vec-unaligned-erms.S: No such file or directory.
google :
memmove-vec-unaligned-erms.S: No such file or directory.
之後,看到
https://github.com/qTox/qTox/issues/3928
也有類似問題,疑似軟體一開始會播放音效,觸發 OpenAL bug (?)
mikevmk 提供的解法是
echo "enable-shm = no" >> /etc/pulse/client.conf
我照做了,並配合用 root 啟動 dbus + 以 user 啟動 pulseaudio --start 。
但結果仍然一樣。
(另外也參考過 https://stackoverflow.com/a/28985715 )
我的host os 是直接用 alsa ,沒有 pulse 。這樣會是問題點嗎?
也曾懷疑會不會是 buster 的 kdevelop 有 bug,
在 buster 上裝了 stretch 的 kdevelop (4:5.0.3-1+b1)
還是一樣的問題。
後來看到 docker hub 上有 yume190/kdevelop (不過是基於 debian:jessie )
測試後雖然有跳出視窗,但內容一片白。其錯誤訊息如下
X Error: BadShmSeg (invalid shared segment parameter) 159
Extension: 142 (MIT-SHM)
Minor opcode: 2 (X_ShmDetach)
Resource id: 0x6200013
Object::connect: No such signal org::freedesktop::UPower::DeviceAdded(QString)
Object::connect: No such signal org::freedesktop::UPower::DeviceRemoved(QString)
X Error: BadShmSeg (invalid shared segment parameter) 159
Extension: 142 (MIT-SHM)
Minor opcode: 3 (X_ShmPutImage)
Resource id: 0x620001b
前後是一堆的 X Error 。沒有 Segmentation fault ,但就是沒畫面。
請問 galic 大的 docker os 是哪個呢?如果安裝版本都一樣,或許真是我 host os
的問題,可能要找時間在 VM 裡面測 docker 了。
※ 編輯: sppmg (36.231.173.247), 11/08/2017 19:10:39
推 galic: 跟no such file那行沒關係啦 那是gdb想要dump code給你看 11/08 20:00
→ galic: 看325行長什麼樣子 但是你沒有抓source code所以跟你說沒有 11/08 20:01
→ galic: 總之那不是重點 看起來是qt5和opengl出了狀況 11/08 20:01
→ galic: 有可能container裡面的qt5太新了 跟host的x11配不上 11/08 20:02
→ galic: 回到jessie那個,有run起來又繪製畫面,就代表已經成功一半 11/08 20:02
→ galic: 你多加的-e QT_X11_NO_MITSHM=1 看看 11/08 20:03
太神啦~~
開出來了!看到啟動畫面那一刻超感動~~~
看來我的 debian 7 可以再戰十年了 XD
不過看來 qt/gui 部份也只能到 jessie 了 ...
我最後用的指令是這樣的:
$ docker run -ti --rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e QT_X11_NO_MITSHM=1 \
yume190/kdevelop
(註:進去後要先 adduser )
剛剛看到 KDevelop 官網有提供 AppImage 可以直接下載。
我還沒測試能否使用。不過如果問題出在 container 和 host 的 x11 問題上,
可能還是無法使用。
非常感謝 galic 大的熱心幫忙!
等等!突然想到如果我用 VNC/ssh -X 等方式而不是用 -v /tmp/.X11-unix
能否執行呢?(我還不會用 -v 之外的方法,所以先隨口問了。)
※ 編輯: sppmg (36.231.173.247), 11/08/2017 23:47:50
推 Hevak: 推很酷的問答流程XD 11/10 23:48