From owner-freebsd-hackers@freebsd.org Tue Sep 5 18:25:26 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id ADFDAE1721D for ; Tue, 5 Sep 2017 18:25:26 +0000 (UTC) (envelope-from auryn@zirakzigil.org) Received: from mx1.etoilesoft.fr (mx1.etoilesoft.fr [52.57.51.18]) by mx1.freebsd.org (Postfix) with ESMTP id D417E63E63 for ; Tue, 5 Sep 2017 18:25:25 +0000 (UTC) (envelope-from auryn@zirakzigil.org) Received: from mx1.etoilesoft.fr (localhost [127.0.0.1]) by mx1.etoilesoft.fr (Postfix) with ESMTP id 37B179D1A4; Tue, 5 Sep 2017 18:26:14 +0000 (UTC) Received: from [172.20.159.85] (localhost [127.0.0.1]) (Authenticated sender: auryn@zirakzigil.org) by mx1.etoilesoft.fr (Postfix) with ESMTPA id 7BCEF9C944; Tue, 5 Sep 2017 18:26:13 +0000 (UTC) Subject: Re: devd in jail To: freebsd-hackers@freebsd.org, Alexander@leidinger.net References: <20170810225439.Horde.1s8Qi_dlNtxgEigsNKbdrer@webmail.leidinger.net> <4a1a99a5-35ea-19c9-7ac8-77875ac6f71f@zirakzigil.org> <20170905151537.Horde.10cHNOX1OVri7mGaUcDeX1l@webmail.leidinger.net> From: Giulio Ferro Message-ID: <7ca865ee-b613-2f0c-daf0-d828884b5e74@zirakzigil.org> Date: Tue, 5 Sep 2017 20:25:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170905151537.Horde.10cHNOX1OVri7mGaUcDeX1l@webmail.leidinger.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: fr X-Virus-Scanned: ClamAV using ClamSMTP X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Sep 2017 18:25:26 -0000 On 05/09/2017 15:15, Alexander Leidinger wrote: > > Quoting Giulio Ferro (from Mon, 4 Sep 2017 > 08:51:10 +0200): > >> On 10/08/2017 22:54, Alexander Leidinger wrote: >>> >>> Quoting Alan Somers (from Wed, 9 Aug 2017 > >>>> Unfortunately, you're not going to be able to run devd(8) in the jail. >>>> /dev/devctl can be opened by only one reader at a time, and that >>>> reader is always devd(8). /dev/devctl2 is actually a completely >>>> different device with a totally different interface. Apologies for >>>> the confusing names. But you may not need to run a totally separate >>>> instance of devd. The X server is probably trying to open either >>>> /var/run/devd.pipe or /var/run/devd.seqpacket.pipe. ktrace would tell >>>> you which. If you can bridge those sockets into the jail, then X >>>> would probably run. >>> >>> Apart from using an explicit config of devices instead of HAL / >>> devd, if this is a X server connecting to a graphics card (instead >>> of just a remote accessible framebuffer), the X-in-a-jail patches >>> are needed, as the X server needs access to /dev/(k)mem and /dev/io >>> (and /dev/drm). >>> >> >> Hi Alexander, >> >> as I said, I don't actually need to connect to any device, as this >> Xorg server in the jail only uses xrdp as backend. > > In this case you don't need my patches at all... I hope (my > understanding is that the X server needs this kind of access to access > hardware). And to answer your question in another mail, yes, the diff > is for current, not for 11.x. > > It's been a while since I looked last at the devd/hald <-> X11 > interaction, but back then it was only needed to auto-detect > mouse/keyboard/..., so I wonder why xrdp needs it. Anyway, have a look > to configure the config with static devices instead of devd/hald (see > https://forums.freebsd.org/threads/7956/). > > Bye, > Alexander. > Hi Alexander, and thanks for your reply. Actually I tried to apply the changes to xorg.conf, and now it doesn't try to access devd anymore. But it core-dumps for no apparent reason... Here is my /etc/X11/xrdp/xorg.conf. It is the one generated by xrdp plus the changes to the "ServerFlags" section specified in your link: ----------------------------------------------------------------------------------------------------------------------------------- Section "ServerLayout" Identifier "X11 Server" Screen "Screen (xrdpdev)" InputDevice "xrdpMouse" "CorePointer" InputDevice "xrdpKeyboard" "CoreKeyboard" EndSection Section "ServerFlags" Option "DontVTSwitch" "on" Option "DontZap" "off" Option "AllowEmptyInput" "off" Option "AutoAddDevices" "off" EndSection Section "Module" Load "dbe" Load "ddc" Load "extmod" Load "glx" Load "int10" Load "record" Load "vbe" Load "xorgxrdp" Load "fb" EndSection Section "InputDevice" Identifier "xrdpKeyboard" Driver "xrdpkeyb" EndSection Section "InputDevice" Identifier "xrdpMouse" Driver "xrdpmouse" EndSection Section "Monitor" Identifier "Monitor" Option "DPMS" HorizSync 30-80 VertRefresh 60-75 ModeLine "1920x1080" 138.500 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync ModeLine "1280x720" 74.25 1280 1720 1760 1980 720 725 730 750 +HSync +VSync Modeline "1368x768" 72.25 1368 1416 1448 1528 768 771 781 790 +hsync -vsync Modeline "1600x900" 119.00 1600 1696 1864 2128 900 901 904 932 -hsync +vsync EndSection Section "Device" Identifier "Video Card (xrdpdev)" Driver "xrdpdev" EndSection Section "Screen" Identifier "Screen (xrdpdev)" Device "Video Card (xrdpdev)" Monitor "Monitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "640x480" "800x600" "1024x768" "1280x720" "1280x1024" "1600x900" "1920x1080" EndSubSection EndSection ----------------------------------------------------------------------------------------------------------------------------------- And here is my Xorg.log file: ----------------------------------------------------------------------------------------------------------------------------------- [ 796.772] X.Org X Server 1.18.4 Release Date: 2016-07-19 [ 796.772] X Protocol Version 11, Revision 0 [ 796.772] Build Operating System: FreeBSD 11.0-RELEASE-p12 amd64 [ 796.772] Current Operating System: FreeBSD xx.xx.xx 11.1-STABLE FreeBSD 11.1-STABLE #0: Thu Aug 31 11:52:30 UTC 2017 root@xx.xx.xx/usr/obj/usr/src/sys/MYKERN amd64 [ 796.772] Build Date: 29 August 2017 01:51:45AM [ 796.772] [ 796.772] Current version of pixman: 0.34.0 [ 796.772] Before reporting problems, check http://wiki.x.org to make sure that you have the latest version. [ 796.772] Markers: (--) probed, (**) from config file, (==) default setting, (++) from command line, (!!) notice, (II) informational, (WW) warning, (EE) error, (NI) not implemented, (??) unknown. [ 796.772] (==) Log file: "/var/log/Xorg.11.log", Time: Tue Sep 5 14:17:24 2017 [ 796.775] (++) Using config file: "/etc/X11/xrdp/xorg.conf" [ 796.775] (==) ServerLayout "X11 Server" [ 796.775] (**) |-->Screen "Screen (xrdpdev)" (0) [ 796.775] (**) | |-->Monitor "Monitor" [ 796.777] (**) | |-->Device "Video Card (xrdpdev)" [ 796.777] (**) |-->Input Device "xrdpMouse" [ 796.777] (**) |-->Input Device "xrdpKeyboard" [ 796.777] (**) Option "DontVTSwitch" "on" [ 796.777] (**) Option "DontZap" "off" [ 796.777] (**) Option "AutoAddDevices" "off" [ 796.777] (**) Not automatically adding devices [ 796.777] (==) Automatically enabling devices [ 796.777] (==) Not automatically adding GPU devices [ 796.777] (==) Max clients allowed: 256, resource mask: 0x1fffff [ 796.787] (==) FontPath set to: /usr/local/share/fonts/misc/, /usr/local/share/fonts/TTF/, /usr/local/share/fonts/OTF/, /usr/local/share/fonts/Type1/, /usr/local/share/fonts/100dpi/, /usr/local/share/fonts/75dpi/ [ 796.787] (==) ModulePath set to "/usr/local/lib/xorg/modules" [ 796.789] (II) Loader magic: 0x813b70 [ 796.789] (II) Module ABI versions: [ 796.789] X.Org ANSI C Emulation: 0.4 [ 796.789] X.Org Video Driver: 20.0 [ 796.789] X.Org XInput driver : 22.1 [ 796.789] X.Org Server Extension : 9.0 [ 796.789] (WW) checkDevMem: failed to open /dev/mem (Operation not permitted) [ 796.789] (--) PCI:*(0:0:2:0) 1013:00b8:5853:0001 rev 0, Mem @ 0xf0000000/33554432, 0xf3000000/4096, BIOS @ 0x????????/65536 [ 796.789] (II) "glx" will be loaded. This was enabled by default and also specified in the config file. [ 796.789] (II) LoadModule: "dbe" [ 796.789] (II) Module "dbe" already built-in [ 796.789] (II) LoadModule: "ddc" [ 796.789] (II) Module "ddc" already built-in [ 796.789] (II) LoadModule: "extmod" [ 796.789] (II) Module "extmod" already built-in [ 796.789] (II) LoadModule: "glx" [ 796.792] (II) Loading /usr/local/lib/xorg/modules/extensions/libglx.so [ 796.821] (II) Module glx: vendor="X.Org Foundation" [ 796.821] compiled for 1.18.4, module version = 1.0.0 [ 796.821] ABI class: X.Org Server Extension, version 9.0 [ 796.821] (==) AIGLX enabled [ 796.822] (II) LoadModule: "int10" [ 796.823] (II) Loading /usr/local/lib/xorg/modules/libint10.so [ 796.825] (II) Module int10: vendor="X.Org Foundation" [ 796.825] compiled for 1.18.4, module version = 1.0.0 [ 796.825] ABI class: X.Org Video Driver, version 20.0 [ 796.825] (II) LoadModule: "record" [ 796.825] (II) Module "record" already built-in [ 796.825] (II) LoadModule: "vbe" [ 796.826] (II) Loading /usr/local/lib/xorg/modules/libvbe.so [ 796.827] (II) Module vbe: vendor="X.Org Foundation" [ 796.827] compiled for 1.18.4, module version = 1.1.0 [ 796.827] ABI class: X.Org Video Driver, version 20.0 [ 796.827] (II) LoadModule: "xorgxrdp" [ 796.828] (II) Loading /usr/local/lib/xorg/modules/libxorgxrdp.so [ 796.832] (II) Module XORGXRDP: vendor="X.Org Foundation" [ 796.832] compiled for 1.18.4, module version = 1.0.0 [ 796.832] ABI class: X.Org Video Driver, version 20.0 [ 796.832] xorgxrdpSetup: [ 796.832] (II) LoadModule: "fb" [ 796.832] (II) Loading /usr/local/lib/xorg/modules/libfb.so [ 796.835] (II) Module fb: vendor="X.Org Foundation" [ 796.835] compiled for 1.18.4, module version = 1.0.0 [ 796.835] ABI class: X.Org ANSI C Emulation, version 0.4 [ 796.835] (II) LoadModule: "xrdpdev" [ 796.835] (II) Loading /usr/local/lib/xorg/modules/drivers/xrdpdev_drv.so [ 796.837] (II) Module XRDPDEV: vendor="X.Org Foundation" [ 796.837] compiled for 1.18.4, module version = 1.0.0 [ 796.837] ABI class: X.Org Video Driver, version 20.0 [ 796.837] xrdpdevSetup: [ 796.837] (II) LoadModule: "xrdpmouse" [ 796.837] (II) Loading /usr/local/lib/xorg/modules/input/xrdpmouse_drv.so [ 796.838] (II) Module XRDPMOUSE: vendor="X.Org Foundation" [ 796.838] compiled for 1.18.4, module version = 1.0.0 [ 796.838] Module class: X.Org XInput Driver [ 796.838] ABI class: X.Org XInput driver, version 22.1 [ 796.838] rdpmousePlug: [ 796.838] (II) LoadModule: "xrdpkeyb" [ 796.838] (II) Loading /usr/local/lib/xorg/modules/input/xrdpkeyb_drv.so [ 796.839] (II) Module XRDPKEYB: vendor="X.Org Foundation" [ 796.839] compiled for 1.18.4, module version = 1.0.0 [ 796.839] Module class: X.Org XInput Driver [ 796.839] ABI class: X.Org XInput driver, version 22.1 [ 796.839] rdpkeybPlug: [ 796.839] rdpIdentify: [ 796.839] (II) XRDPDEV: driver for xrdp: XRDPDEV [ 796.839] rdpDriverFunc: op 10 [ 796.839] (WW) Falling back to old probe method for XRDPDEV [ 796.839] rdpProbe: [ 796.839] (II) Loading sub module "fb" [ 796.839] (II) LoadModule: "fb" [ 796.839] (II) Loading /usr/local/lib/xorg/modules/libfb.so [ 796.839] (II) Module fb: vendor="X.Org Foundation" [ 796.839] compiled for 1.18.4, module version = 1.0.0 [ 796.839] ABI class: X.Org ANSI C Emulation, version 0.4 [ 796.839] (II) XRDPDEV(0): using default device [ 796.839] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support [ 796.839] rdpPreInit: [ 796.839] (**) XRDPDEV(0): Depth 24, (--) framebuffer bpp 32 [ 796.839] (==) XRDPDEV(0): RGB weight 888 [ 796.839] (==) XRDPDEV(0): Using gamma correction (1.0, 1.0, 1.0) [ 796.839] (==) XRDPDEV(0): Default visual is TrueColor [ 796.839] (==) XRDPDEV(0): DPI set to (96, 96) [ 796.839] (II) XRDPDEV(0): mode "640x480" ok [ 796.839] (II) XRDPDEV(0): mode "800x600" ok [ 796.839] (--) XRDPDEV(0): Virtual size is 800x600 (pitch 800) [ 796.839] (**) XRDPDEV(0): Default mode "800x600": 36.0 MHz (scaled from 0.0 MHz), 35.2 kHz, 56.2 Hz [ 796.839] (II) XRDPDEV(0): Modeline "800x600"x0.0 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz d) [ 796.839] (==) Depth 24 pixmap format is 32 bpp [ 796.841] rdpScreenInit: virtualX 800 virtualY 600 rgbBits 8 depth 24 [ 796.841] rdpScreenInit: pfbMemory bytes 1920000 [ 796.841] rdpScreenInit: pfbMemory 0x807200000 [ 796.843] rdpSimdInit: assigning yuv functions [ 796.843] rdpSimdInit: cpuid ax 1 cx 0 return ax 0x000306f2 bx 0x00020800 cx 0xfffa3203 dx 0x178bfbff [ 796.843] rdpSimdInit: sse2 amd64 yuv functions assigned [ 796.843] rdpXvInit: depth 24 [ 796.845] (==) XRDPDEV(0): Backing store enabled [ 796.845] rdpClientConInit: kill disconnected [0] timeout [0] sec [ 796.845] [ 796.845] rdpScreenInit: out [ 796.846] (==) RandR enabled [ 796.846] MIT-SHM extension disabled due to lack of kernel support [ 796.852] (II) AIGLX: Screen 0 is not DRI2 capable [ 796.852] (EE) AIGLX: reverting to software rendering [ 797.431] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer [ 797.431] (II) AIGLX: Loaded and initialized swrast [ 797.431] (II) GLX: Initialized DRISWRAST GL provider for screen 0 [ 797.545] (II) Using input driver 'XRDPMOUSE' for 'xrdpMouse' [ 797.545] (**) Option "CorePointer" [ 797.545] (**) xrdpMouse: always reports core events [ 797.545] rdpmousePreInit: drv 0x803c15240 info 0x80ce72e20, flags 0x0 [ 797.545] (II) XINPUT: Adding extended input device "xrdpMouse" (type: Mouse, id 6) [ 797.545] rdpmouseControl: what 0 [ 797.545] rdpmouseDeviceInit: [ 797.545] rdpmouseCtrl: [ 797.545] rdpRegisterInputCallback: type 1 proc 0x806da1d20 [ 797.545] (**) xrdpMouse: (accel) keeping acceleration scheme 1 [ 797.545] (**) xrdpMouse: (accel) acceleration profile 0 [ 797.545] (**) xrdpMouse: (accel) acceleration factor: 2.000 [ 797.545] (**) xrdpMouse: (accel) acceleration threshold: 4 [ 797.545] rdpmouseControl: what 1 [ 797.545] rdpmouseDeviceOn: [ 797.545] (II) Using input driver 'XRDPKEYB' for 'xrdpKeyboard' [ 797.545] (**) Option "CoreKeyboard" [ 797.545] (**) xrdpKeyboard: always reports core events [ 797.545] rdpkeybPreInit: drv 0x803c152c0 info 0x80ce72f60, flags 0x0 [ 797.545] (II) XINPUT: Adding extended input device "xrdpKeyboard" (type: Keyboard, id 7) [ 797.545] rdpkeybControl: what 0 [ 797.545] rdpkeybDeviceInit: [ 797.568] rdpkeybChangeKeyboardControl: [ 797.568] rdpkeybChangeKeyboardControl: autoRepeat on [ 797.568] rdpRegisterInputCallback: type 0 proc 0x806fa41b0 [ 797.568] rdpkeybControl: what 1 [ 797.568] rdpkeybDeviceOn: [ 797.568] (II) config/devd: probing input devices... [ 797.568] (II) config/devd: adding input device (null) (/dev/kbdmux) [ 797.568] (II) AutoAddDevices is off - not adding device. [ 797.568] (II) config/devd: kbdmux is enabled, ignoring device atkbd0 [ 797.568] (II) config/devd: adding input device (null) (/dev/sysmouse) [ 797.568] (II) AutoAddDevices is off - not adding device. [ 797.601] (II) config/devd: adding input device Mouse (/dev/psm0) [ 797.601] (II) AutoAddDevices is off - not adding device. [ 797.601] (EE) config/devd: fail to connect to devd [ 797.601] [config] failed to initialise devd [ 797.602] rdpSaveScreen: [ 797.602] rdpClientConGotConnection: [ 797.602] rdpClientConGotConnection: g_sck_accept ok new_sck 5 [ 797.602] rdpClientConGotConnection: adding only clientCon [ 797.602] rdpDeferredRandR: [ 797.602] rdpResizeSession: width 1024 height 768 [ 797.602] calling RRScreenSizeSet [ 797.602] rdpRRScreenSetSize: width 1024 height 768 mmWidth 271 mmHeight 203 [ 797.602] rdpRRGetInfo: [ 797.602] screen resized to 1024x768 [ 797.604] RRScreenSizeSet ok 1 [ 797.604] rdpResizeSession: width 1244 height 509 [ 797.604] calling RRScreenSizeSet [ 797.604] rdpRRScreenSetSize: width 1244 height 509 mmWidth 329 mmHeight 135 [ 797.604] rdpRRGetInfo: [ 797.604] screen resized to 1244x509 [ 797.605] RRScreenSizeSet ok 1 [ 797.605] rdpClientConProcessMsgVersion: version 0 0 0 1 [ 797.605] rdpClientConProcessScreenSizeMsg: set width 1244 height 509 bpp 16 [ 797.605] rdpClientConProcessScreenSizeMsg: shmemid -1 shmemptr 0xffffffffffffffff [ 797.605] rdpClientConProcessMsgClientInput: invalidate x 0 y 0 cx 1244 cy 509 [ 797.668] rdpInDeferredUpdateCallback: [ 797.668] rdpkeybChangeKeyboardControl: [ 797.668] rdpkeybChangeKeyboardControl: autoRepeat off [ 813.899] rdpClientConProcessMsgClientInfo: [ 813.899] got client info bytes 5744 [ 813.899] jpeg support 0 [ 813.899] offscreen support 0 [ 813.899] offscreen size 0 [ 813.899] offscreen entries 0 [ 813.899] client supports glyph cache but server disabled [ 813.899] client can not do offscreen to offscreen blits [ 813.899] client can do new(color) cursor [ 813.899] client can not do multimon [ 813.899] rdpRRSetRdpOutputs: numCrtcs 0 monitorCount 0 [ 813.899] rdpRRSetRdpOutputs: add output 0 left 0 top 0 width 1244 height 509 [ 813.900] rdpLoadLayout: keylayout 0x00000409 variant display 11 [ 813.900] rdpkeybChangeKeyboardControl: [ 813.900] rdpkeybChangeKeyboardControl: autoRepeat on [ 813.900] rdpkeybChangeKeyboardControl: [ 813.900] rdpkeybChangeKeyboardControl: autoRepeat on [ 813.910] (EE) [ 813.910] (EE) Backtrace: [ 813.912] (EE) 0: /usr/local/bin/Xorg (OsInit+0x38a) [0x5abfba] [ 813.914] (EE) 1: /lib/libthr.so.3 (_pthread_sigmask+0x544) [0x8025cbd94] [ 813.915] (EE) 2: /lib/libthr.so.3 (_pthread_getspecific+0xe5f) [0x8025cbbef] [ 813.916] (EE) 3: ? (?+0xe5f) [0x7ffffffffe62] [ 813.918] (EE) 4: /usr/local/lib/xorg/modules/libxorgxrdp.so (rdpCapture+0xf60) [0x806771aa0] [ 813.919] (EE) 5: /usr/local/lib/xorg/modules/libxorgxrdp.so (rdpClientConAddAllBox+0x408) [0x80676fbf8] [ 813.920] (EE) 6: /usr/local/lib/xorg/modules/libxorgxrdp.so (rdpClientConAddDirtyScreenReg+0x3c3) [0x80676ef13] [ 813.921] (EE) 7: /usr/local/bin/Xorg (WaitForSomething+0x103e) [0x5a47ce] [ 813.922] (EE) 8: /usr/local/bin/Xorg (UpdateCurrentTimeIf+0x121) [0x431621] [ 813.923] (EE) 9: /usr/local/bin/Xorg (remove_fs_handlers+0x597) [0x43b697] [ 813.924] (EE) 10: /usr/local/bin/Xorg (_start+0x17f) [0x42506f] [ 813.925] (EE) 11: ? (?+0x17f) [0x80083617f] [ 813.925] (EE) [ 813.925] (EE) Segmentation fault at address 0xffffffffffffffff [ 813.925] (EE) Fatal server error: [ 813.925] (EE) Caught signal 11 (Segmentation fault). Server aborting [ 813.925] (EE) [ 813.925] (EE) Please consult the The X.Org Foundation support at http://wiki.x.org for help. [ 813.925] (EE) Please also check the log file at "/var/log/Xorg.11.log" for additional information. [ 813.925] (EE) [ 813.925] rdpmouseControl: what 4 [ 813.925] rdpkeybControl: what 4 [ 813.925] rdpLeaveVT: [ 813.925] (EE) Server terminated with error (1). Closing log file. ----------------------------------------------------------------------------------------------------------------------------------- I have a custom kernel which include GENERIC and only the VIMAGE + bridge support is added. Can you make something of it? Or do you have any suggestions about what I could try? Thanks in advance! Giulio