LightDM GTK+ Greeter Background - inconsistent display Tested HW: - Family : NV50 Chipset: G98 (NV98) / MCP79/MCP7A (NVAC) GeForce 8400 GS / ION VGA nouveau.ko & nouveau_drv.so - BROKEN nouveau.ko & modesetting_drv.so - OK nvidia.ko & nvidia_drv.so - OK ~~~~~~~~~~~~~~ - Family : NV30 Chipset: NV34 (NV34) GeForce FX 5200 nouveau.ko & nouveau_drv.so - OK ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tested SW: - lightdm-gtk-2.0.0-2.fc21.x86_64 - lightdm-gtk-greeter_2.0.0-0ubuntu1_amd64 - xorg-x11-drv-nouveau 1.0.7 to 1.0.11 & git ~~~~~~~~~~~~~~ As shown here: http://goo.gl/jHUkbS ~~~~~~~~ Comment: Whatever is actually happening here is not evident in the logs: dmesg, Xorg.*.log, lightdm.log(DEBUG) and x-*-greeter.log(DEBUG). Top of the "greeter.png" /etc/lightdm/lightdm-gtk-greeter.conf: background=/etc/lightdm/greeter.png is partially visible through the transparent panel: https://github.com/shimmerproject/Greybird/blob/master/gtk-3.0/apps/lightdm-gtk-greeter.css#L14 and is fully revealed only after clicking the "Log In" or "Unlock" button (ENTER key), or toggling the accessibility features such as "Large Font" (F1 key) and "High Contrast" (F2 key). It is important to note the Greeter Background display inconsistency occurs entirely after the booting from the "Soft Off" (S5). And with regard to the re-booting, it is unpredictable in itself, i.e. the Greeter Background may be displayed or may not. Ref. http://lists.freedesktop.org/archives/lightdm/2015-March/000773.html
I may be slow... but I don't fully comprehend what the problem is. Note that I'm not familiar with lightdm beyond it being an xdm replacement. Is it using X or GL to do the displaying? I note that CSS is being used -- do you know what processes this? Perhaps you can get a lightdm person to help with debugging?
Here's a simple patch to try... *no* idea if it'll help. I assume not, but who knows. [Patch to xf86-video-nouveau.] diff --git a/src/nv50_accel.c b/src/nv50_accel.c index 5efbd19..ecad602 100644 --- a/src/nv50_accel.c +++ b/src/nv50_accel.c @@ -207,6 +207,8 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(COLOR_MASK_COMMON), 1); PUSH_DATA (push, 1); + BEGIN_NV04(push, NV50_3D(ZETA_ENABLE), 1); + PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(TIC_ADDRESS_HIGH), 3); PUSH_DATA (push, (pNv->scratch->offset + TIC_OFFSET) >> 32);
(In reply to Ilia Mirkin from comment #1) > I may be slow... but I don't fully comprehend what the problem is. Note that > I'm not familiar with lightdm beyond it being an xdm replacement. > > Is it using X or GL to do the displaying? I note that CSS is being used -- > do you know what processes this? > > Perhaps you can get a lightdm person to help with debugging? I left a note on the lightdm@lists.freedesktop.org, so devs can comment here. LightDM is the display manager - it starts the X server and greeter (login screen) - in this case LightDM GTK+ Greeter.
(In reply to Ilia Mirkin from comment #2) > Here's a simple patch to try... *no* idea if it'll help. I assume not, but > who knows. [Patch to xf86-video-nouveau.] > > diff --git a/src/nv50_accel.c b/src/nv50_accel.c > index 5efbd19..ecad602 100644 > --- a/src/nv50_accel.c > +++ b/src/nv50_accel.c > @@ -207,6 +207,8 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn) > PUSH_DATA (push, 0); > BEGIN_NV04(push, NV50_3D(COLOR_MASK_COMMON), 1); > PUSH_DATA (push, 1); > + BEGIN_NV04(push, NV50_3D(ZETA_ENABLE), 1); > + PUSH_DATA (push, 0); > > BEGIN_NV04(push, NV50_3D(TIC_ADDRESS_HIGH), 3); > PUSH_DATA (push, (pNv->scratch->offset + TIC_OFFSET) >> 32); With this nouve git: http://cgit.freedesktop.org/nouveau/xf86-video-nouveau/ dunno whether it is proper position, but comparing with the NV50_3D(ZETA_ENABLE) in src/nvc0_accel.c your patch fit like this: diff --git a/src/nv50_accel.c b/src/nv50_accel.c index b27f67a..50b3a08 100644 --- a/src/nv50_accel.c +++ b/src/nv50_accel.c @@ -207,6 +207,8 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 0); BEGIN_NV04(push, SUBC_3D(0x0f90), 1); PUSH_DATA (push, 1); + BEGIN_NV04(push, NV50_3D(ZETA_ENABLE), 1); + PUSH_DATA (push, 0); BEGIN_NV04(push, NV50_3D(TIC_ADDRESS_HIGH), 3); PUSH_DATA (push, (pNv->scratch->offset + TIC_OFFSET) >> 32); Nevertheless it still has no effect. With regard to your question - GL, I tried the following: options nouveau noaccel=1 and it has a positive effect - Greeter Background is displayed correctly. After all this, if I understand it correctly: 1. Family : NV30 / Chipset: NV34 (NV34) / GeForce FX 5200 because it has no problemos in this case - per se is not accelerated? 2. the same applies if the modesetting is used - not accelerated? 3. also there is no problemos if nouveau noaccel=1 is used - not accelerated? Perhaps this is flaw within the greeter application then?
(In reply to poma from comment #4) > dunno whether it is proper position, but comparing with the > NV50_3D(ZETA_ENABLE) in src/nvc0_accel.c > your patch fit like this: Yes, this is what I had in mind. On my local branch I've replaced a bunch of the 0xbla values with names :) Thanks for testing, it was a long shot though. > Nevertheless it still has no effect. > > With regard to your question - GL, I tried the following: > options nouveau noaccel=1 > > and it has a positive effect - Greeter Background is displayed correctly. > > After all this, if I understand it correctly: > 1. Family : NV30 / Chipset: NV34 (NV34) / GeForce FX 5200 > because it has no problemos in this case - per se is not accelerated? Nope, it's accelerated. Just all the acceleration logic is different, it's very different hardware. > 2. the same applies if the modesetting is used - not accelerated? Right. Or perhaps it's using glamor to implement EXA? Depends on the modesetting version. > 3. also there is no problemos if nouveau noaccel=1 is used - not accelerated? Right, not accelerated. You can be more targeted and set Option "AccelMethod" "none" in your xorg.conf which will only disable 2d accel via the ddx. Or you can try setting it to "glamor" and see if the problem goes away. > > Perhaps this is flaw within the greeter application then? Perhaps. Would be nice to know wtf the application is doing in the first place, then we may be able to work out where the issue might lie. At this point I don't know if it's using X or GL for drawing this stuff to the screen, which are very different paths.
Thanks for the "not accelerated?" clarification. I also tested Greeter Background loading with these two options, a) Option "AccelMethod" "none" - works. b) Option "AccelMethod" "glamor" - works conditionally, with: Xfwm4 - Xfce4 window manager - enabled display compositing - enabled synchronize drawing to the vertical blank when 'glxinfo' starts, X crashes: X.Org X Server 1.16.3 (**) NOUVEAU(0): Option "AccelMethod" "glamor" (II) Loading sub module "glamoregl" (II) LoadModule: "glamoregl" (II) Loading /usr/lib64/xorg/modules/libglamoregl.so (II) Module glamoregl: vendor="X.Org Foundation" (II) glamor: OpenGL accelerated X.org driver based. (II) glamor: EGL version 1.4 (DRI2): (II) NOUVEAU(0): [GLAMOR] EGL initialised (==) NOUVEAU(0): GLX sync to VBlank enabled. (EE) NOUVEAU(0): [COPY] failed to allocate class. (II) NOUVEAU(0): [GLAMOR] initialised (II) AIGLX: Screen 0 is not DRI2 capable (EE) AIGLX: reverting to software rendering (II) AIGLX: Loaded and initialized swrast (II) GLX: Initialized DRISWRAST GL provider for screen 0 (EE) (EE) Backtrace: (EE) 0: /usr/libexec/Xorg.bin (OsLookupColor+0x119) [0x59c739] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f55eb9b795f] (EE) 2: /usr/libexec/Xorg.bin (present_event_notify+0xb88) [0x51be48] (EE) 3: /usr/libexec/Xorg.bin (RegisterResourceName+0x232) [0x45c302] (EE) 4: /usr/libexec/Xorg.bin (FreeClientResources+0x6c) [0x45d1fc] (EE) 5: /usr/libexec/Xorg.bin (CloseDownClient+0x70) [0x438610] (EE) 6: /usr/libexec/Xorg.bin (SendErrorToClient+0x32e) [0x4391ee] (EE) 7: /usr/libexec/Xorg.bin (remove_fs_handlers+0x416) [0x43d316] (EE) 8: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f55eb9a2fe0] (EE) 9: /usr/libexec/Xorg.bin (_start+0x29) [0x4276ee] (EE) 10: ? (?+0x29) [0x29] (EE) (EE) Segmentation fault at address 0x84969893a9 (EE) Fatal server error: (EE) Caught signal 11 (Segmentation fault). Server aborting (EE) (EE) Please consult the Fedora Project support at http://wiki.x.org for help. (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. (EE) (II) NOUVEAU(0): NVLeaveVT is called. (EE) Server terminated with error (1). Closing log file.
Some clarifications: - Greeter is usual GTK3 application. - No WM or compositor run in greeter session. - Greeter creates one GtkWindow for each monitor. - Greeter uses standard cairo functions to draw monitor's window background. There are no "login" or "panel" windows - just child widgets inside fullscreen window. This grey color looks like default window color - just set "background=#default" to see it. So, the question - why gtk draw semi-transparent panel correctly (using parent window background as base) and do not do it for "free" space. Add "allow-debugging=true" option to lightdm-gtk-greeter.conf to get more informative log. Some questions: 1. What happened if background is color (#0f0)? I don't expect that there will be any difference, just interesting. 2. Another gtk theme? Or empty "theme-name=". I saw very similar bug some time ago - laptop with archlinux and catalyst. In some cases gtk didn't draw whole windows except some widgets (text entries - blinking cursor). But this bug is gone now.
Well, given that it works OK with glamor (and other hardware), this feels most likely to be a bug in the EXA implementation somewhere. There's a weird bug where if you do some crazy things you can get stale window contents... this doesn't feel like that one though. Could be a compositing or who knows what issue. In a *perfect* world, there would be a simple stand-alone app that reproduces this, and we can use that to debug. Not sure how feasible that is.
(In reply to andrew p. from comment #7) > Some clarifications: > - Greeter is usual GTK3 application. > - No WM or compositor run in greeter session. > - Greeter creates one GtkWindow for each monitor. > - Greeter uses standard cairo functions to draw monitor's window background. > > There are no "login" or "panel" windows - just child widgets inside > fullscreen window. > This grey color looks like default window color - just set > "background=#default" to see it. > So, the question - why gtk draw semi-transparent panel correctly (using > parent window background as base) and do not do it for "free" space. > > Add "allow-debugging=true" option to lightdm-gtk-greeter.conf to get more > informative log. > > Some questions: > 1. What happened if background is color (#0f0)? I don't expect that there > will be any difference, just interesting. > 2. Another gtk theme? Or empty "theme-name=". > Color codes work OK, theme also does not affect the final outcome. background color (#0f0) - green, works OK as any other. > I saw very similar bug some time ago - laptop with archlinux and catalyst. > In some cases gtk didn't draw whole windows except some widgets (text > entries - blinking cursor). But this bug is gone now. Thanks for answering.
Created attachment 114602 [details] NV50 log Whatever is actually happening here is not evident in the logs: dmesg, Xorg.*.log, lightdm.log(DEBUG) and x-*-greeter.log(DEBUG). However, here we go. As Ilia concluded, EXA is a puzzle here.
This also works but it looks like another variations on a theme - not accelerated. Section "Device" Identifier "video0" Driver "nouveau" Option "ShadowFB" "on" EndSection Option "ShadowFB" "boolean" Enable or disable use of the shadow framebuffer layer. Default: off. If this option is enabled, the driver will cause the CPU to do each drawing operation first into a shadow frame buffer in system virtual memory and then copy the result into video memory. If this option is not active, the CPU will draw directly into video memory. Enabling this option is beneficial for those systems where reading from video memory is, on average, slower than the corresponding read/modify/write operation in system virtual memory. This is normally the case for PCI or AGP adapters, and, so, this option is enabled by default unless acceleration is enabled. [0.706] X Protocol Version 11, Revision 0 [0.706] Build ID: xorg-x11-server 1.17.1-9.fc21 [0.706] Current version of pixman: 0.32.6 [0.859] (II) Module ABI versions: [0.859] X.Org ANSI C Emulation: 0.4 [0.859] X.Org Video Driver: 19.0 [0.859] X.Org Server Extension : 9.0 [0.863] (II) LoadModule: "glx" [0.863] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so [0.864] (II) Module glx: vendor="X.Org Foundation" [0.865] compiled for 1.17.1, module version = 1.0.0 [0.865] ABI class: X.Org Server Extension, version 9.0 [0.865] (==) AIGLX enabled [0.865] (II) LoadModule: "nouveau" [1.364] (II) Loading /usr/lib64/xorg/modules/drivers/nouveau_drv.so [1.372] (II) Module nouveau: vendor="X.Org Foundation" [1.372] compiled for 1.17.1, module version = 1.0.11 [1.372] Module class: X.Org Video Driver [1.372] ABI class: X.Org Video Driver, version 19.0 [1.372] (II) NOUVEAU driver [1.373] (II) [drm] nouveau interface version: 1.2.1 [1.373] (II) Loading sub module "dri2" [1.373] (II) LoadModule: "dri2" [1.373] (II) Module "dri2" already built-in [1.373] (--) NOUVEAU(0): Chipset: "NVIDIA NV98" [1.373] (**) NOUVEAU(0): Option "ShadowFB" "on" [1.373] (**) NOUVEAU(0): Using "Shadow Framebuffer" - acceleration disabled [1.373] (==) NOUVEAU(0): Page flipping enabled [1.373] (==) NOUVEAU(0): Swap limit set to 1 [Max allowed 2] [1.373] (==) NOUVEAU(0): Page flipping synced to vblank by kernel. [1.373] (II) NOUVEAU(0): Initializing outputs ... [1.534] (II) Loading sub module "shadowfb" [1.534] (II) LoadModule: "shadowfb" [1.534] (II) Loading /usr/lib64/xorg/modules/libshadowfb.so [1.534] (II) Module shadowfb: vendor="X.Org Foundation" [1.534] compiled for 1.17.1, module version = 1.0.0 [1.534] ABI class: X.Org ANSI C Emulation, version 0.4 [1.534] (--) Depth 24 pixmap format is 32 bpp [1.534] (**) NOUVEAU(0): [COPY] acceleration disabled [1.535] (==) NOUVEAU(0): Backing store enabled [1.535] (II) NOUVEAU(0): RandR 1.2 enabled, ignore the following RandR disabled message. [1.535] (--) RandR disabled [1.539] (II) AIGLX: Screen 0 is not DRI2 capable [1.539] (EE) AIGLX: reverting to software rendering [3.245] (II) AIGLX: Loaded and initialized swrast [3.284] (II) GLX: Initialized DRISWRAST GL provider for screen 0 ...
Andrew, among others, there is the Cairo GL backend. Can be drawn backgrounds with it? http://cairographics.org/backends
poma, not sure what your skillset is... If you're comfortable modifying code, you could start hacking away at xf86-video-nouveau. Take a look at src/nv50_exa.c -- there are a bunch of functions like NV50EXAPrepare*. In each of them, Just put as the first line (after variable decls) something like NOUVEAU_FALLBACK("poma\n"); If you do it in all the prepare functions, I bet that the background will start to work. (And you will basically have no accel.). Figure out which operation is the one that causes all the trouble (by starting to remove the fallbacks). Once you figure out which high-level op it is, I can provide further instructions to narrow down the specific operation further.
Created attachment 114680 [details] nv50_exa NV50EXAPrepareComposite rm OR diff --git a/src/nv50_exa.c b/src/nv50_exa.c index 221160d..18a11a1 100644 --- a/src/nv50_exa.c +++ b/src/nv50_exa.c @@ -832,6 +832,8 @@ NV50EXAPrepareComposite(int op, { NV50EXA_LOCALS(pdpix); + NOUVEAU_FALLBACK("poma\n"); + if (!PUSH_SPACE(push, 256)) NOUVEAU_FALLBACK("space\n"); PUSH_RESET(push); Both have a positive effect on Greeter Background image loading, BUT produce various kinds of corruption within Desktop session.
I also tested all these extensions: $ Xorg -extension ? ... [mi] Only the following extensions can be run-time disabled: [mi] Generic Events [mi] Composite [mi] DAMAGE [mi] DOUBLE-BUFFER [mi] DPMS [mi] GLX [mi] MIT-SCREEN-SAVER [mi] MIT-SHM [mi] RANDR [mi] RENDER [mi] X-Resource [mi] XFree86-DGA [mi] XFree86-DRI [mi] XFree86-VidModeExtension [mi] XFIXES [mi] XINERAMA [mi] SELinux [mi] XTEST [mi] XVideo ... RENDER disabled has a positive effect on Greeter Background image loading, BUT it also turns off Xfwm4 compositing within Desktop session. Section "Extensions" Option "RENDER" "Disable" EndSection [9.516] (**) Extension "RENDER" is disabled ~~~~~~~~~~~~~~~~~~~ Apart from all this, with XVideo disabled, X crashes. Section "Extensions" Option "XVideo" "Disable" EndSection [9.251] (EE) [9.251] (EE) Backtrace: [9.251] (EE) 0: /usr/libexec/Xorg (OsSigHandler+0x29) [0x598659] [9.251] (EE) 1: /lib64/libpthread.so.0 (__restore_rt+0x0) [0x7f7961a060cf] [9.252] (EE) 2: /usr/libexec/Xorg (xf86XvMCScreenInit+0x24) [0x494494] [9.252] (EE) 3: /usr/lib64/xorg/modules/drivers/nouveau_drv.so (vlInitXvMC+0x69) [0x7f795d532929] [9.252] (EE) 4: /usr/lib64/xorg/modules/drivers/nouveau_drv.so (NVInitVideo+0x138) [0x7f795d514808] [9.252] (EE) 5: /usr/lib64/xorg/modules/drivers/nouveau_drv.so (NVScreenInit+0x3c6) [0x7f795d51a086] [9.252] (EE) 6: /usr/libexec/Xorg (AddScreen+0x101) [0x43a4e1] [9.253] (EE) 7: /usr/libexec/Xorg (InitOutput+0x3e1) [0x47c501] [9.253] (EE) 8: /usr/libexec/Xorg (dix_main+0x1ea) [0x43e0ca] [9.253] (EE) 9: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f7961658fe0] [9.254] (EE) 10: /usr/libexec/Xorg (_start+0x29) [0x42876e] [9.254] (EE) 11: ? (?+0x29) [0x29] [9.254] (EE) [9.254] (EE) Segmentation fault at address 0x4 [9.254] (EE) Fatal server error: [9.254] (EE) Caught signal 11 (Segmentation fault). Server aborting [9.254] (EE) [9.254] (EE) Please consult the Fedora Project support at http://wiki.x.org for help. [9.254] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. [9.254] (EE) [9.259] (EE) Server terminated with error (1). Closing log file.
Within nv50_exa.c, regardless of the function or statement FALLBACK-ed, commented or deleted, at best, the effect is the same as with disabling EXA Composite. It has a positive effect on Greeter Background image loading, BUT produce at least corruption of some of the icons within Desktop session. Section "Device" Identifier "video0" Driver "nouveau" Option "EXANoComposite" "Yes" EndSection [8.266] (II) Loading sub module "exa" [8.266] (II) LoadModule: "exa" [8.266] (II) Loading /usr/lib64/xorg/modules/libexa.so [8.266] (II) Module exa: vendor="X.Org Foundation" [8.266] (**) NOUVEAU(0): Option "EXANoComposite" "Yes" [8.266] (**) NOUVEAU(0): EXA: Disabling Composite operation (RENDER acceleration) [8.266] (II) EXA(0): Driver allocated offscreen pixmaps [8.266] (II) EXA(0): Driver registered support for the following operations: [8.266] (II) Solid [8.266] (II) Copy [8.266] (II) UploadToScreen [8.266] (II) DownloadFromScreen Disables acceleration of the Composite operation, which is at the heart of the Render extension. Not related to the Composite extension. Default: No. man 4 exa
Apart from all this, Option "EXANoUploadToScreen" "Yes" [2.007] (II) Loading sub module "exa" [2.007] (II) LoadModule: "exa" [2.007] (II) Loading /usr/lib64/xorg/modules/libexa.so [2.007] (II) Module exa: vendor="X.Org Foundation" [2.007] (**) NOUVEAU(0): Option "EXANoUploadToScreen" "Yes" [2.007] (**) NOUVEAU(0): EXA: Disabling UploadToScreen [2.007] (II) EXA(0): Driver allocated offscreen pixmaps [2.007] (II) EXA(0): Driver registered support for the following operations: [2.007] (II) Solid [2.007] (II) Copy [2.007] (II) Composite (RENDER acceleration) [2.008] (II) DownloadFromScreen ... [7.390] (EE) [7.390] (EE) Backtrace: [7.392] (EE) 0: /usr/libexec/Xorg.bin (OsLookupColor+0x119) [0x59c739] [7.393] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f349a50095f] [7.393] (EE) 2: /lib64/libc.so.6 (cfree+0x5d8) [0x7f349a54fa18] [7.394] (EE) 3: /usr/lib64/xorg/modules/libexa.so (exaMoveOutPixmap+0x30f0) [0x7f3494e05790] [7.394] (EE) 4: /usr/libexec/Xorg.bin (DamageDestroy+0x222) [0x51dd42] [7.394] (EE) 5: /usr/libexec/Xorg.bin (ShmRegisterFbFuncs+0x739) [0x4db449] [7.401] (EE) 6: /usr/libexec/Xorg.bin (FreePicture+0x158) [0x50d578] [7.401] (EE) 7: /usr/lib64/xorg/modules/libexa.so (exaEnableDisableFBAccess+0x26b6) [0x7f3494e0cd76] [7.402] (EE) 8: /usr/libexec/Xorg.bin (AddTraps+0x4d8c) [0x51a1fc] [7.402] (EE) 9: /usr/libexec/Xorg.bin (SendErrorToClient+0x2f7) [0x4391b7] [7.402] (EE) 10: /usr/libexec/Xorg.bin (remove_fs_handlers+0x416) [0x43d316] [7.402] (EE) 11: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f349a4ebfe0] [7.403] (EE) 12: /usr/libexec/Xorg.bin (_start+0x29) [0x4276ee] [7.403] (EE) 13: ? (?+0x29) [0x29] [7.403] (EE) [7.403] (EE) Segmentation fault at address 0x117 [7.403] (EE) Fatal server error: [7.403] (EE) Caught signal 11 (Segmentation fault). Server aborting [7.403] (EE) [7.403] (EE) Please consult the Fedora Project support at http://wiki.x.org for help. [7.403] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. [7.403] (EE) [7.404] (II) AIGLX: Suspending AIGLX clients for VT switch [7.404] (II) NOUVEAU(0): NVLeaveVT is called. [7.504] (EE) Server terminated with error (1). Closing log file. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Option "EXANoDownloadFromScreen" "Yes" [5.578] (II) Loading sub module "exa" [5.578] (II) LoadModule: "exa" [5.578] (II) Loading /usr/lib64/xorg/modules/libexa.so [5.578] (II) Module exa: vendor="X.Org Foundation" [5.578] compiled for 1.16.3, module version = 2.6.0 [5.578] ABI class: X.Org Video Driver, version 18.0 [5.578] (**) NOUVEAU(0): Option "EXANoDownloadFromScreen" "Yes" [5.578] (**) NOUVEAU(0): EXA: Disabling DownloadFromScreen [5.578] (II) EXA(0): Driver allocated offscreen pixmaps [5.578] (II) EXA(0): Driver registered support for the following operations: [5.578] (II) Solid [5.578] (II) Copy [5.578] (II) Composite (RENDER acceleration) [5.578] (II) UploadToScreen ... [6.309] (EE) [6.309] (EE) Backtrace: [6.310] (EE) 0: /usr/libexec/Xorg.bin (OsLookupColor+0x119) [0x59c739] [6.312] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f97cfdf295f] [6.313] (EE) 2: /lib64/libc.so.6 (__memcpy_sse2_unaligned+0x20) [0x7f97cfe59ce0] [6.313] (EE) 3: /usr/lib64/xorg/modules/libexa.so (exaMoveOutPixmap+0xe9e) [0x7f97ca6f331e] [6.313] (EE) 4: /usr/lib64/xorg/modules/libexa.so (exaMoveOutPixmap+0x1363) [0x7f97ca6f39c3] [6.314] (EE) 5: /usr/lib64/xorg/modules/libexa.so (exaMoveOutPixmap+0x39df) [0x7f97ca6f880f] [6.314] (EE) 6: /usr/lib64/xorg/modules/libexa.so (exaEnableDisableFBAccess+0x2af1) [0x7f97ca6ff731] [6.314] (EE) 7: /usr/lib64/xorg/modules/libexa.so (exaEnableDisableFBAccess+0x4286) [0x7f97ca702766] [6.314] (EE) 8: /usr/lib64/xorg/modules/libexa.so (exaMoveOutPixmap+0x6892) [0x7f97ca6fe682] [6.315] (EE) 9: /usr/libexec/Xorg.bin (miFillUniqueSpanGroup+0x19c8) [0x58a4d8] [6.315] (EE) 10: /usr/libexec/Xorg.bin (xf86I2CGetScreenBuses+0x1d9a) [0x4cad3a] [6.315] (EE) 11: /usr/libexec/Xorg.bin (AddTraps+0x2e55) [0x515de5] [6.315] (EE) 12: /usr/libexec/Xorg.bin (SendErrorToClient+0x2f7) [0x4391b7] [6.315] (EE) 13: /usr/libexec/Xorg.bin (remove_fs_handlers+0x416) [0x43d316] [6.316] (EE) 14: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f97cfdddfe0] [6.316] (EE) 15: /usr/libexec/Xorg.bin (_start+0x29) [0x4276ee] [6.317] (EE) 16: ? (?+0x29) [0x29] [6.317] (EE) [6.317] (EE) Segmentation fault at address 0x0 [6.317] (EE) Fatal server error: [6.317] (EE) Caught signal 11 (Segmentation fault). Server aborting [6.317] (EE) [6.317] (EE) Please consult the Fedora Project support at http://wiki.x.org for help. [6.317] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information. [6.317] (EE) [6.317] (EE) Server terminated with error (1). Closing log file.
The "lazy background bitmap" issue can be tested with the Xfce test compilation: http://goo.gl/Gm4ffO ISO/
Hi, it's me again. I'm not familiar with all this nouveau stuff, so can you tell what is the current status of the bug? I received bug reports that look very similar to this. Is there any fix or maybe workaround? https://bugs.launchpad.net/ubuntu/+source/lightdm-gtk-greeter/+bug/1459079
(In reply to andrew p. from comment #19) > Hi, it's me again. I'm not familiar with all this nouveau stuff, so can you > tell what is the current status of the bug? > I received bug reports that look very similar to this. Is there any fix or > maybe workaround? > > https://bugs.launchpad.net/ubuntu/+source/lightdm-gtk-greeter/+bug/1459079 The status is that it doesn't work :) I've been looking at the overall logic in nouveau's EXA implementation, and it looks extremely dodgy wrt CPU access -- I think that PrepareAccess should do an unconditional PUSH_KICK(push) before the nouveau_bo_wait. That'd be good to test out.
Created attachment 116090 [details] [review] kick pushbuf before mapping bo This is the patch I had in mind... totally untested, but seems like it could be the right thing to do.
(In reply to Ilia Mirkin from comment #21) > Created attachment 116090 [details] [review] [review] > kick pushbuf before mapping bo > > This is the patch I had in mind... totally untested, but seems like it could > be the right thing to do. Ben tells me that nouveau_bo_wait (called by nouveau_bo_map) ends up doing this anyways. Oh well.
(In reply to Ilia Mirkin from comment #22) > Ben tells me that nouveau_bo_wait (called by nouveau_bo_map) ends up doing > this anyways. Oh well. Is it bad, right? So, no hope in the near future?
(In reply to andrew p. from comment #23) > (In reply to Ilia Mirkin from comment #22) > > Ben tells me that nouveau_bo_wait (called by nouveau_bo_map) ends up doing > > this anyways. Oh well. > > Is it bad, right? So, no hope in the near future? It's good that it does that. It's bad for figuring out what the cause of the bug is. *Ideally* someone would submit an x11trace (aka xtrace too) of the buggy application so that we can better see what's going on. I have no experience analyzing such traces, but everything should be in there...
(In reply to Ilia Mirkin from comment #24) > It's good that it does that. Is it so good that newest nouveau version will resolve this bug? About xtrace, for poma: > Guys, if any of you know how to x[11]trace lightdm-gtk-greeter? You need to modify "greeter-wrapper" script to run xtrace. Default path for ubuntu: /usr/lib/lightdm/lightdm-greeter-session Replace launching command: exec $@ & with xtrace command: exec xtrace -b -o /tmp/xtrace.log $@ &
(In reply to andrew p. from comment #25) > (In reply to Ilia Mirkin from comment #24) > > It's good that it does that. > Is it so good that newest nouveau version will resolve this bug? > > About xtrace, for poma: > > Guys, if any of you know how to x[11]trace lightdm-gtk-greeter? > You need to modify "greeter-wrapper" script to run xtrace. Default path for > ubuntu: /usr/lib/lightdm/lightdm-greeter-session > > Replace launching command: > exec $@ & > with xtrace command: > exec xtrace -b -o /tmp/xtrace.log $@ & $ rpm -ql lightdm-gtk | grep -v 'locale\|icons\|doc' /etc/lightdm/lightdm-gtk-greeter.conf /usr/sbin/lightdm-gtk-greeter /usr/share/xgreeters/lightdm-greeter.desktop /usr/share/xgreeters/lightdm-gtk-greeter.desktop
(In reply to poma from comment #26) > (In reply to andrew p. from comment #25) > > (In reply to Ilia Mirkin from comment #24) > > > It's good that it does that. > > Is it so good that newest nouveau version will resolve this bug? > > > > About xtrace, for poma: > > > Guys, if any of you know how to x[11]trace lightdm-gtk-greeter? > > You need to modify "greeter-wrapper" script to run xtrace. Default path for > > ubuntu: /usr/lib/lightdm/lightdm-greeter-session > > > > Replace launching command: > > exec $@ & > > with xtrace command: > > exec xtrace -b -o /tmp/xtrace.log $@ & > > > $ rpm -ql lightdm-gtk | grep -v 'locale\|icons\|doc' > /etc/lightdm/lightdm-gtk-greeter.conf > /usr/sbin/lightdm-gtk-greeter > /usr/share/xgreeters/lightdm-greeter.desktop > /usr/share/xgreeters/lightdm-gtk-greeter.desktop $ file /usr/share/xgreeters/lightdm-greeter.desktop /usr/share/xgreeters/lightdm-greeter.desktop: symbolic link to `/etc/alternatives/lightdm-greeter' $ file /etc/alternatives/lightdm-greeter /etc/alternatives/lightdm-greeter: symbolic link to `/usr/share/xgreeters/lightdm-gtk-greeter.desktop' $ cat /usr/share/xgreeters/lightdm-gtk-greeter.desktop [Desktop Entry] Name=LightDM GTK+ Greeter Comment=This runs the GTK+ greeter, it should only be run from LightDM Exec=lightdm-gtk-greeter Type=Application X-Ubuntu-Gettext-Domain=lightdm Here, that's all, no "wrapper".
(In reply to poma from comment #27) > Here, that's all, no "wrapper". lightdm-gtk-greeter.desktop must be ok: Exec=xtrace -b -o /tmp/xtrace.log lightdm-gtk-greeter
(In reply to andrew p. from comment #28) > (In reply to poma from comment #27) > > Here, that's all, no "wrapper". > lightdm-gtk-greeter.desktop must be ok: > > Exec=xtrace -b -o /tmp/xtrace.log lightdm-gtk-greeter # cat /usr/share/xgreeters/lightdm-gtk-greeter.desktop.old [Desktop Entry] Name=LightDM GTK+ Greeter Comment=This runs the GTK+ greeter, it should only be run from LightDM Exec=xtrace -b -o /tmp/xtrace.log lightdm-gtk-greeter Type=Application X-Ubuntu-Gettext-Domain=lightdm # cat /var/log/lightdm/lightdm.log.old ... [+0.53s] DEBUG: Seat seat0: Display server ready, starting session authentication [+0.53s] DEBUG: Session pid=13245: Started with service 'lightdm-greeter', username 'lightdm' [+0.57s] DEBUG: Session pid=13245: Authentication complete with return value 0: Success [+0.57s] DEBUG: Seat seat0: Session authenticated, running command [+0.57s] DEBUG: Session pid=13245: Running command /usr/bin/xtrace -b -o /tmp/xtrace.log lightdm-gtk-greeter [+0.57s] DEBUG: Creating shared data directory /var/lib/lightdm-data/lightdm [+0.57s] DEBUG: Session pid=13245: Logging to /var/log/lightdm/x-0-greeter.log [+0.61s] DEBUG: Activating VT 1 [+0.61s] DEBUG: Activating login1 session c52 [+0.61s] DEBUG: Seat seat0 changes active session to c52 [+0.61s] DEBUG: Session c52 is already active [+0.61s] DEBUG: Session pid=13245: Greeter closed communication channel [+0.62s] DEBUG: Session pid=13245: Exited with return value 0 [+0.62s] DEBUG: Seat seat0: Session stopped [+0.62s] DEBUG: Seat seat0: Stopping; failed to start a greeter [+0.62s] DEBUG: Seat seat0: Stopping [+0.62s] DEBUG: Seat seat0: Stopping display server [+0.62s] DEBUG: Sending signal 15 to process 13235 [+0.62s] DEBUG: Seat seat0 changes active session to [+0.62s] CRITICAL: session_get_login1_session_id: assertion 'session != NULL' failed [+0.87s] DEBUG: Process 13235 exited with return value 0 [+0.87s] DEBUG: DisplayServer x-0: X server stopped [+0.87s] DEBUG: Releasing VT 1 [+0.87s] DEBUG: DisplayServer x-0: Removing X server authority /var/run/lightdm/root/:0 [+0.87s] DEBUG: Seat seat0: Display server stopped [+0.87s] DEBUG: Seat seat0: Stopped [+0.87s] DEBUG: Required seat has stopped [+0.87s] DEBUG: Stopping display manager [+0.87s] DEBUG: Display manager stopped [+0.87s] DEBUG: Stopping daemon [+0.87s] DEBUG: Exiting with return value 1 # cat /var/log/lightdm/x-0-greeter.log.old executable `-b' not found Try `xtrace --help' or `xtrace --usage' for more information. # xtrace --help Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]... Trace execution of program by printing currently executed function. --data=FILE Don't run the program, just print the data from FILE. -?,--help Print this help and exit --usage Give a short usage message -V,--version Print version information and exit Mandatory arguments to long options are also mandatory for any corresponding short options. For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>. # xtrace --version xtrace (GNU libc) 2.20 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.
# which xtrace /bin/xtrace # rpm -qf /bin/xtrace glibc-utils-2.20-8.fc21.x86_64 # yum -q search xtrace ============================= N/S matched: xtrace ============================== xtrace.x86_64 : A program for X11 protocol tracing # yum -q install xtrace ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: xtrace x86_64 1.3.1-7.fc21 fedora 102 k Transaction Summary ================================================================================ Install 1 Package Is this ok [y/d/N]: y Transaction check error: file /usr/bin/xtrace from install of xtrace-1.3.1-7.fc21.x86_64 conflicts with file from package glibc-utils-2.20-8.fc21.x86_64 Error Summary ------------- # yumdownloader -q xtrace # rpm -ivh xtrace-1.3.1-7.fc21.x86_64.rpm Preparing... ################################# [100%] file /usr/bin/xtrace from install of xtrace-1.3.1-7.fc21.x86_64 conflicts with file from package glibc-utils-2.20-8.fc21.x86_64 # rpm -ivh xtrace-1.3.1-7.fc21.x86_64.rpm --force Preparing... ################################# [100%] Updating / installing... 1:xtrace-1.3.1-7.fc21 ################################# [100%] # rpm -qf /bin/xtrace xtrace-1.3.1-7.fc21.x86_64 # xtrace --help xtrace: Dump all X protocol data being tunneled from a fake X display to a real one. usage: xtrace [options] [[--] command args ...] --display, -d <display to connect to> --fakedisplay, -D <display to fake> --copyauthentication, -c Copy credentials --nocopyauthentication, -n Do not copy credentials --authfile, -f <file instead of ~/.Xauthority to get credentials from> --newauthfile, -F <file instead of ~/.Xauthority to put credentials in> --waitforclient, -W wait for connection even if command terminates --stopwhendone, -s Return when last client disconnects --keeprunning, -k Keep running --denyextensions, -e Fake unavailability of all extensions --readwritedebug, -w Print amounts of data read/sent --maxlistlength, -m <maximum number of entries in each list shown> --outfile, -o <filename> Output to file instead of stdout --buffered, -b Do not output every line but only when buffer is full # xtrace --version xtrace version 1.3.1
"Review Request: xtrace - Utility for tracing X11 protocol for debugging" https://bugzilla.redhat.com/show_bug.cgi?id=1067665#c18
(In reply to poma from comment #31) > "Review Request: xtrace - Utility for tracing X11 protocol for debugging" > https://bugzilla.redhat.com/show_bug.cgi?id=1067665#c18 # yum -q erase xtrace ================================================================================ Package Arch Version Repository Size ================================================================================ Removing: xtrace x86_64 1.3.1-7.fc21 installed 297 k Transaction Summary ================================================================================ Remove 1 Package Is this ok [y/N]: y Warning: RPMDB altered outside of yum. # yum -q reinstall glibc-utils ================================================================================ Package Arch Version Repository Size ================================================================================ Reinstalling: glibc-utils x86_64 2.20-8.fc21 updates 28 k Transaction Summary ================================================================================ Reinstall 1 Package Is this ok [y/d/N]: y # yum -q search x11trace ============================ N/S matched: x11trace ============================= x11trace.x86_64 : A program for X11 protocol tracing Name and summary matches only, use "search all" for everything. # yum -q install x11trace Package x11trace-1.3.1-8.fc21.x86_64 already installed and latest version Madre mia
# cat /usr/share/xgreeters/lightdm-gtk-greeter.desktop.old [Desktop Entry] Name=LightDM GTK+ Greeter Comment=This runs the GTK+ greeter, it should only be run from LightDM Exec=x11trace -b -o /tmp/xtrace.log lightdm-gtk-greeter Type=Application X-Ubuntu-Gettext-Domain=lightdm # file /tmp/xtrace.log /tmp/xtrace.log: empty # cat /var/log/lightdm/lightdm.log.old ... [+0.57s] DEBUG: Seat seat0: Display server ready, starting session authentication [+0.57s] DEBUG: Session pid=3421: Started with service 'lightdm-greeter', username 'lightdm' [+0.61s] DEBUG: Session pid=3421: Authentication complete with return value 0: Success [+0.61s] DEBUG: Seat seat0: Session authenticated, running command [+0.61s] DEBUG: Session pid=3421: Running command /usr/bin/x11trace -b -o /tmp/xtrace.log lightdm-gtk-greeter [+0.61s] DEBUG: Creating shared data directory /var/lib/lightdm-data/lightdm [+0.61s] DEBUG: Session pid=3421: Logging to /var/log/lightdm/x-0-greeter.log [+0.69s] DEBUG: Activating VT 1 [+0.69s] DEBUG: Activating login1 session c6 [+0.69s] DEBUG: Seat seat0 changes active session to c6 [+0.69s] DEBUG: Session c6 is already active [+0.70s] DEBUG: Session pid=3421: Greeter closed communication channel [+0.71s] DEBUG: Session pid=3421: Exited with return value 0 [+0.71s] DEBUG: Seat seat0: Session stopped [+0.71s] DEBUG: Seat seat0: Stopping; failed to start a greeter [+0.71s] DEBUG: Seat seat0: Stopping [+0.71s] DEBUG: Seat seat0: Stopping display server [+0.71s] DEBUG: Sending signal 15 to process 3405 [+0.71s] DEBUG: Seat seat0 changes active session to [+0.71s] CRITICAL: session_get_login1_session_id: assertion 'session != NULL' failed [+1.00s] DEBUG: Process 3405 exited with return value 0 [+1.00s] DEBUG: DisplayServer x-0: X server stopped [+1.00s] DEBUG: Releasing VT 1 [+1.00s] DEBUG: DisplayServer x-0: Removing X server authority /var/run/lightdm/root/:0 [+1.00s] DEBUG: Seat seat0: Display server stopped [+1.00s] DEBUG: Seat seat0: Stopped [+1.00s] DEBUG: Required seat has stopped [+1.00s] DEBUG: Stopping display manager [+1.00s] DEBUG: Display manager stopped [+1.00s] DEBUG: Stopping daemon [+1.00s] DEBUG: Exiting with return value 1 # cat /var/log/lightdm/x-0-greeter.log.old No display name to create specified, trying :9 Error binding socket for ':9': 98=Address already in use
Created attachment 116136 [details] lightdm and greeter log /usr/share/xgreeters/lightdm-gtk-greeter.desktop [Desktop Entry] Name=LightDM GTK+ Greeter Comment=This runs the GTK+ greeter, it should only be run from LightDM Exec=x11trace -D :11 -d :0 -b -o /var/log/lightdm/x11trace.log /sbin/lightdm-gtk-greeter Type=Application
Created attachment 116137 [details] x11trace.log x11trace -D :11 -d :0 -b -o /var/log/lightdm/x11trace.log /sbin/lightdm-gtk-greeter
Created attachment 116192 [details] x11trace.log OK From working setup. Can be tested on: $ dmesg|grep Family|awk '{print $8}' NV50 Test compilation: http://goo.gl/Gm4ffO ISO/Fedora-Live-Xfce.iso
Loading background bitmap is solved with: https://git.gnome.org/browse/gtk+/commit/?id=a34a022 $ git log --stat -1 -p gtk/gtkwindow.c commit a34a0224e4fc6eff35fd41b7f318517b20b95713 Author: Jasper St. Pierre <jstpierre@mecheye.net> Date: Fri Feb 13 18:21:42 2015 -0800 gtkwindow: Don't set the background if the window is app-paintable This fixes transparent DND windows. --- gtk/gtkwindow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 4dbde2a..2b1bcca 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -7006,7 +7006,7 @@ gtk_window_realize (GtkWidget *widget) /* We don't need to set a background on the GdkWindow; with decorations * we draw the background ourself */ - if (!priv->client_decorated) + if (!priv->client_decorated && !gtk_widget_get_app_paintable (widget)) gtk_style_context_set_background (gtk_widget_get_style_context (widget), gdk_window); attributes.x = allocation.x; Backporting this particular commit(part of 3.15.7 release) to 3.14.x has no effect, so rather than upgrade from: gtk3-3.14.13-2.fc21 glib2-2.42.2-1.fc21 atk-2.14.0-1.fc21 to: gtk3-3.15.7-1.fc21 glib2-2.43.4-1.fc21 atk-2.15.1-1.fc21 this would actually be the best solution: gtk3-3.16.3-1.fc22 glib2-2.44.1-1.fc22 atk-2.16.0-1.fc22 I thank Ilia and Andrew for their participation. Ref. https://bugs.freedesktop.org/show_bug.cgi?id=89730 https://bugs.launchpad.net/ubuntu/+source/lightdm-gtk-greeter/+bug/1459079
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.