2つの画面と2つのx11vncサーバー(各画面ごとに1つ)を持つXvfb:最初のサーバーのみが機能します。

2つの画面と2つのx11vncサーバー(各画面ごとに1つ)を持つXvfb:最初のサーバーのみが機能します。

私はアーチx86_64にCentOS 7とx11vncバージョン0.9.13(バージョン11.el7)を使用しています。

次のように2つの画面(:10.0と:10.1)でXvfbを作成します。

sudo Xvfb :10 -screen 0 1366x768x24+32 -screen 1 1066x768x24+32 -br +bs -ac &

最初の画面でx11vncを起動します。

sudo x11vnc -display :10.0 -ncache 0 -rfbport 9999 -shared -forever -debug_ncache &

VNCサーバーを使用してその画面を使用できます。動作します。たとえば、その画面でFirefoxを開きます。

x11vncを終了して別のものを起動しますが、2番目の画面では次のようになります。

sudo x11vnc -display :10.1 -ncache 0 -rfbport 10000 -shared -forever -debug_ncache &

VNCサーバーを使用してその画面を使用できます。動作します。たとえば、その画面でChromeを開きます。

これで x11vnc を再び終了し、両方のサーバーを起動します。最初の画面から2番目の画面まで始めます。

sudo x11vnc -display :10.0 -ncache 0 -rfbport 9999 -shared -forever -debug_ncache &
sudo x11vnc -display :10.1 -ncache 0 -rfbport 10000 -shared -forever -debug_ncache &

VNCサーバーを使用して最初の画面を使用できます。動作し、Firefoxウィンドウを見ることができます。
ただし、2番目のVNCに接続しようとすると、次のトレースで競合が発生します。

*** buffer overflow detected ***: x11vnc terminated
======= Backtrace: =========
/lib64/libc.so.6(__fortify_fail+0x37)[0x7fd434365597]
/lib64/libc.so.6(+0x10c750)[0x7fd434363750]
/lib64/libc.so.6(+0x10e507)[0x7fd434365507]
/lib64/libvncserver.so.0(rfbProcessNewConnection+0x114)[0x7fd436d01764]
/lib64/libvncserver.so.0(rfbCheckFds+0x3f8)[0x7fd436d01c98]
/lib64/libvncserver.so.0(rfbProcessEvents+0x1d)[0x7fd436cf8c3d]
x11vnc[0x4a0951]
x11vnc[0x463d8a]
x11vnc[0x410c0a]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7fd434278b15]
x11vnc[0x41b201]
======= Memory map: ========
00400000-00542000 r-xp 00000000 fd:00 14735                              /usr/bin/x11vnc
00741000-00742000 r--p 00141000 fd:00 14735                              /usr/bin/x11vnc
00742000-00788000 rw-p 00142000 fd:00 14735                              /usr/bin/x11vnc
00788000-00ad0000 rw-p 00000000 00:00 0                                  [heap]
7fd42f627000-7fd42f63c000 r-xp 00000000 fd:00 38                         /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fd42f63c000-7fd42f83b000 ---p 00015000 fd:00 38                         /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fd42f83b000-7fd42f83c000 r--p 00014000 fd:00 38                         /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fd42f83c000-7fd42f83d000 rw-p 00015000 fd:00 38                         /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7fd42f83d000-7fd42f868000 rw-s 00000000 00:04 913866832                  /SYSV00000000 (deleted)
7fd42f868000-7fd42f892000 rw-s 00000000 00:04 913834063                  /SYSV00000000 (deleted)
7fd42f892000-7fd42f8bb000 rw-s 00000000 00:04 913801294                  /SYSV00000000 (deleted)
7fd42f8bb000-7fd42f8e3000 rw-s 00000000 00:04 913768525                  /SYSV00000000 (deleted)
7fd42f8e3000-7fd42f90a000 rw-s 00000000 00:04 913735756                  /SYSV00000000 (deleted)
7fd42f90a000-7fd42f930000 rw-s 00000000 00:04 913702987                  /SYSV00000000 (deleted)
7fd42f930000-7fd42f955000 rw-s 00000000 00:04 913670218                  /SYSV00000000 (deleted)
7fd42f955000-7fd42f979000 rw-s 00000000 00:04 913637449                  /SYSV00000000 (deleted)
7fd42f979000-7fd42f99c000 rw-s 00000000 00:04 913604680                  /SYSV00000000 (deleted)
7fd42f99c000-7fd42f9be000 rw-s 00000000 00:04 913571911                  /SYSV00000000 (deleted)
7fd42f9be000-7fd42f9df000 rw-s 00000000 00:04 913539142                  /SYSV00000000 (deleted)
7fd42f9df000-7fd42f9ff000 rw-s 00000000 00:04 913506373                  /SYSV00000000 (deleted)
7fd42f9ff000-7fd42fa1e000 rw-s 00000000 00:04 913473604                  /SYSV00000000 (deleted)
7fd42fa1e000-7fd42fe1f000 rw-p 00000000 00:00 0
7fd42fe1f000-7fd430220000 rw-s 00000000 00:04 912457765                  /SYSV00000000 (deleted)
7fd430220000-7fd430244000 r-xp 00000000 fd:00 4260                       /usr/lib64/liblzma.so.5.0.99
7fd430244000-7fd430443000 ---p 00024000 fd:00 4260                       /usr/lib64/liblzma.so.5.0.99
7fd430443000-7fd430444000 r--p 00023000 fd:00 4260                       /usr/lib64/liblzma.so.5.0.99
7fd430444000-7fd430445000 rw-p 00024000 fd:00 4260                       /usr/lib64/liblzma.so.5.0.99
7fd430445000-7fd4304a5000 r-xp 00000000 fd:00 4288                       /usr/lib64/libpcre.so.1.2.0
7fd4304a5000-7fd4306a4000 ---p 00060000 fd:00 4288                       /usr/lib64/libpcre.so.1.2.0
7fd4306a4000-7fd4306a5000 r--p 0005f000 fd:00 4288                       /usr/lib64/libpcre.so.1.2.0
7fd4306a5000-7fd4306a6000 rw-p 00060000 fd:00 4288                       /usr/lib64/libpcre.so.1.2.0
7fd4306a6000-7fd4306c7000 r-xp 00000000 fd:00 4383                       /usr/lib64/libselinux.so.1
7fd4306c7000-7fd4308c7000 ---p 00021000 fd:00 4383                       /usr/lib64/libselinux.so.1
7fd4308c7000-7fd4308c8000 r--p 00021000 fd:00 4383                       /usr/lib64/libselinux.so.1
7fd4308c8000-7fd4308c9000 rw-p 00022000 fd:00 4383                       /usr/lib64/libselinux.so.1
7fd4308c9000-7fd4308cb000 rw-p 00000000 00:00 0
7fd4308cb000-7fd4308d2000 r-xp 00000000 fd:00 4597                       /usr/lib64/libffi.so.6.0.1
7fd4308d2000-7fd430ad1000 ---p 00007000 fd:00 4597                       /usr/lib64/libffi.so.6.0.1
7fd430ad1000-7fd430ad2000 r--p 00006000 fd:00 4597                       /usr/lib64/libffi.so.6.0.1
7fd430ad2000-7fd430ad3000 rw-p 00007000 fd:00 4597                       /usr/lib64/libffi.so.6.0.1
7fd430ad3000-7fd430ada000 r-xp 00000000 fd:00 11023                      /usr/lib64/librt-2.17.so
7fd430ada000-7fd430cd9000 ---p 00007000 fd:00 11023                      /usr/lib64/librt-2.17.so
7fd430cd9000-7fd430cda000 r--p 00006000 fd:00 11023                      /usr/lib64/librt-2.17.so
7fd430cda000-7fd430cdb000 rw-p 00007000 fd:00 11023                      /usr/lib64/librt-2.17.so
7fd430cdb000-7fd430cdd000 r-xp 00000000 fd:00 13338                      /usr/lib64/libXau.so.6.0.0
7fd430cdd000-7fd430edd000 ---p 00002000 fd:00 13338                      /usr/lib64/libXau.so.6.0.0
7fd430edd000-7fd430ede000 r--p 00002000 fd:00 13338                      /usr/lib64/libXau.so.6.0.0
7fd430ede000-7fd430edf000 rw-p 00003000 fd:00 13338                      /usr/lib64/libXau.so.6.0.0
7fd430edf000-7fd430ee2000 r-xp 00000000 fd:00 4978                       /usr/lib64/libkeyutils.so.1.5
7fd430ee2000-7fd4310e1000 ---p 00003000 fd:00 4978                       /usr/lib64/libkeyutils.so.1.5
7fd4310e1000-7fd4310e2000 r--p 00002000 fd:00 4978                       /usr/lib64/libkeyutils.so.1.5
7fd4310e2000-7fd4310e3000 rw-p 00003000 fd:00 4978                       /usr/lib64/libkeyutils.so.1.5
7fd4310e3000-7fd4310f0000 r-xp 00000000 fd:00 5356                       /usr/lib64/libkrb5support.so.0.1
7fd4310f0000-7fd4312f0000 ---p 0000d000 fd:00 5356                       /usr/lib64/libkrb5support.so.0.1
7fd4312f0000-7fd4312f1000 r--p 0000d000 fd:00 5356                       /usr/lib64/libkrb5support.so.0.1
7fd4312f1000-7fd4312f2000 rw-p 0000e000 fd:00 5356                       /usr/lib64/libkrb5support.so.0.1
7fd4312f2000-7fd431368000 r-xp 00000000 fd:00 4770                       /usr/lib64/libgmp.so.10.2.0
7fd431368000-7fd431567000 ---p 00076000 fd:00 4770                       /usr/lib64/libgmp.so.10.2.0caught signal: 6
11/10/2016 17:24:00 deleted 43 tile_row polling images.

それでは、x11vncサーバーを逆順で起動します。最初の2番目の画面、次に1番目の画面:

sudo x11vnc -display :10.1 -ncache 0 -rfbport 10000 -shared -forever -debug_ncache &
sudo x11vnc -display :10.0 -ncache 0 -rfbport 9999 -shared -forever -debug_ncache &

VNCを使用してscreen:10.1(2番目の画面ですが、最初のx11vncが起動します)に到達しようとすると機能します。 Chromeウィンドウが表示されます。
ただし、screen:10.0(最後のx11vncサーバーが起動します)に接続しようとすると、x11vncは上記と同じトレースでクラッシュします(最初のx11vncサーバーはまだ壊れておらず、正常に実行されています)。

注:私はWindowsでRealVNCとTightVNCをクライアントとして使用しています。
両方とも2番目のサーバーがクラッシュしました。

注2:それぞれ1つの画面(0)のみを持つモニター:10と:11で2つの別々のXvfbsを実行し、2つのx11vncサーバーを:10と:11に指定すると、同じ競合が発生します。

注3:私はXvfbとx11vncをrootとして実行しています。通常のユーザーとして実行すると、同じ競合が発生します。

私は何が間違っていましたか?
1つのx11vncサーバーを起動し、2つのX11画面に2つのポートを提供する方法はありますか?
これはx11vncのバグですか?

ベストアンサー1

私のシステムにインストールされているバージョンのlibvncserverに問題があるようです。
しかし、最新バージョンです。

x11vncは独自のlibvncサーバーを使用するようにコンパイルできます。
x11vncからlibvncserverのソースコードを読みました。これには競合を引き起こす方法は含まれていません。
それで、gcc、すべての-develライブラリをインストールし、x11vncを再コンパイルしてインストールするなどの操作を実行するとうまくいくと思いました。
おそらく。

代わりに別のソリューションを使用しました。
Xvncは、メモリ内のXサーバーとVNCサーバーの両方を実行できます。
そしてそれは衝突しません。
だから今はこの設定を使用しています。

おすすめ記事