connecting 2x 4k screens on a Dell XPS12 (9Q33): compiz crashed with SIGSEGV in GLTexture::matrix() from GLScreen::glPaintCompositedOutput

Bug #1459613 reported by D
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Compiz
Fix Released
Medium
Unassigned
compiz (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

this is a new bug report following #1455598

The relevant details i think are;
- I own a Dell XPS12 (9Q33) and recently i have had 2 external monitors hooked to that through the (mini) display ports. The Screens are from the type Dell P2815Q. The screens have the ability to use Daisy chain (MST=>https://en.wikipedia.org/wiki/DisplayPort#Multiple_displays_on_single_DisplayPort_connector), but it fails if i connect my laptop with 2x 4k external monitors. If i try it, it shows me some quick lines of text and returnes me to the login screen. If i turn _off_ the secondairy screen, it does login with 1 external monitor at 4k. If i setup the resolution to 2x 2,5k on the external monitors, it does work. Both at the office (where there are as well 2 Dell monitors with 2,5k resolution (2500xsomething) but from a different type). I think the problem is with the 4k resolutions. The setup does work on Windows 8.1 Pro, so i can use my main screen at 1920x1080 as 2x 4k external screens (although its on 30Hz, but thats due to the display port 1.2 specification i think). I haven't tried to connect the laptop with the main screen disabled/closed, so im gonna try that soon. But even if that works, i still think it's a bug as it seems to work on Windows.
- - I've updates the bios to A08, 03/03/2015 (the output from dmidecode), but if i connect the laptop (with the laptopscreen enabled) to the 2x 4k screens, it just logs me out.
- I've found that if i disable the laptopscreen and try to use 2x 4k, it works!. Everything is really small though.. ;-)
- also, i found out that working with the 2x 4k screens (and the laptop-builtin-screen disabled), it goes into slumber or powerdown mode. If it does, i can't succesfully get it out and have to restart the machine. I'm gonna test some more on that, but it might be related to switching back to 3 screens afer coming out of slumber.

ProblemType: Crash
DistroRelease: Ubuntu 15.04
Package: compiz-core 1:0.9.12.1+15.04.20150410.1-0ubuntu1
ProcVersionSignature: Ubuntu 3.19.0-18.18-generic 3.19.6
Uname: Linux 3.19.0-18-generic x86_64
.tmp.unity.support.test.0:

ApportVersion: 2.17.2-0ubuntu1.1
Architecture: amd64
CompizPlugins: No value set for `/apps/compiz-1/general/screen0/options/active_plugins'
CompositorRunning: compiz
CompositorUnredirectDriverBlacklist: '(nouveau|Intel).*Mesa 8.0'
CompositorUnredirectFSW: true
CurrentDesktop: Unity
Date: Thu May 28 12:06:20 2015
DistUpgraded: 2015-04-23 21:52:13,436 DEBUG enabling apt cron job
DistroCodename: vivid
DistroVariant: ubuntu
ExecutablePath: /usr/bin/compiz
ExecutableTimestamp: 1428704498
GraphicsCard:
 Intel Corporation Haswell-ULT Integrated Graphics Controller [8086:0a16] (rev 09) (prog-if 00 [VGA controller])
   Subsystem: Dell Device [1028:05e3]
InstallationDate: Installed on 2015-03-04 (84 days ago)
InstallationMedia: Ubuntu 14.10 "Utopic Unicorn" - Release amd64 (20141022.1)
MachineType: Dell Inc. XPS 12-9Q33
ProcCmdline: compiz
ProcCwd: /home/fr3lld
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.19.0-18-generic root=UUID=8896779c-8f4d-4b4d-baae-5dd647d2572f ro quiet splash nomdmonddf nomdmonisw nomdmonddf nomdmonisw vt.handoff=7
SegvAnalysis:
 Segfault happened at: 0x7f6c3e7b8c50 <_ZNK9GLTexture6matrixEv>: mov 0x28(%rdi),%rax
 PC (0x7f6c3e7b8c50) ok
 source "0x28(%rdi)" (0x00000028) not located in a known VMA region (needed readable region)!
 destination "%rax" ok
SegvReason: reading NULL VMA
Signal: 11
SourcePackage: compiz
StacktraceTop:
 GLTexture::matrix() const () from /usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 GLScreen::glPaintCompositedOutput(CompRegion const&, GLFramebufferObject*, unsigned int) () from /usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 PrivateGLScreen::paintOutputs(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int, CompRegion const&) () from /usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 CompositeScreen::paint(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int) () from /usr/lib/x86_64-linux-gnu/compiz/libcomposite.so
 CompositeScreen::handlePaintTimeout() () from /usr/lib/x86_64-linux-gnu/compiz/libcomposite.so
Title: compiz crashed with SIGSEGV in GLTexture::matrix()
UpgradeStatus: Upgraded to vivid on 2015-04-23 (34 days ago)
UserGroups: adm cdrom dialout dip libvirtd lpadmin plugdev sambashare sudo
dmi.bios.date: 03/03/2015
dmi.bios.vendor: Dell Inc.
dmi.bios.version: A08
dmi.board.name: XPS 12-9Q33
dmi.board.vendor: Dell Inc.
dmi.board.version: A08
dmi.chassis.type: 8
dmi.chassis.vendor: Dell Inc.
dmi.chassis.version: Not Specified
dmi.modalias: dmi:bvnDellInc.:bvrA08:bd03/03/2015:svnDellInc.:pnXPS12-9Q33:pvrA08:rvnDellInc.:rnXPS12-9Q33:rvrA08:cvnDellInc.:ct8:cvrNotSpecified:
dmi.product.name: XPS 12-9Q33
dmi.product.version: A08
dmi.sys.vendor: Dell Inc.
version.compiz: compiz 1:0.9.12.1+15.04.20150410.1-0ubuntu1
version.ia32-libs: ia32-libs N/A
version.libdrm2: libdrm2 2.4.60-2
version.libgl1-mesa-dri: libgl1-mesa-dri 10.5.2-0ubuntu1
version.libgl1-mesa-dri-experimental: libgl1-mesa-dri-experimental N/A
version.libgl1-mesa-glx: libgl1-mesa-glx 10.5.2-0ubuntu1
version.xserver-xorg-core: xserver-xorg-core 2:1.17.1-0ubuntu3
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev 1:2.9.0-1ubuntu2
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:7.5.0-1ubuntu2
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.99.917-1~exp1ubuntu2.1
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:1.0.11-1ubuntu2build1
xserver.bootTime: Thu May 28 09:16:21 2015
xserver.configfile: default
xserver.errors:

xserver.logfile: /var/log/Xorg.0.log
xserver.outputs:
 product id 1021
 vendor LGD
xserver.version: 2:1.17.1-0ubuntu3

Revision history for this message
D (360-dennis) wrote :
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 GLTexture::matrix() const () from /tmp/apport_sandbox_trirA_/usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 GLScreen::glPaintCompositedOutput(CompRegion const&, GLFramebufferObject*, unsigned int) () from /tmp/apport_sandbox_trirA_/usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 PrivateGLScreen::paintOutputs(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int, CompRegion const&) () from /tmp/apport_sandbox_trirA_/usr/lib/x86_64-linux-gnu/compiz/libopengl.so
 CompositeScreen::paint(std::list<CompOutput*, std::allocator<CompOutput*> >&, unsigned int) () from /tmp/apport_sandbox_trirA_/usr/lib/x86_64-linux-gnu/compiz/libcomposite.so
 CompositeScreen::handlePaintTimeout() () from /tmp/apport_sandbox_trirA_/usr/lib/x86_64-linux-gnu/compiz/libcomposite.so

Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in compiz (Ubuntu):
importance: Undecided → Medium
tags: removed: need-amd64-retrace
Revision history for this message
penalvch (penalvch) wrote : Re: connecting 2x 4k screens on a Dell XPS12 (9Q33): compiz crashed with SIGSEGV in GLTexture::matrix()

D, thank you for reporting this and helping make Ubuntu better. As a potential WORKAROUND, does switching to GNOME Flashback (Metacity) allow this setup?

Changed in compiz (Ubuntu):
importance: Medium → Undecided
status: New → Incomplete
tags: added: latest-bios-a08
Changed in compiz (Ubuntu):
importance: Undecided → Medium
Revision history for this message
D (360-dennis) wrote :

So i installed metacity, opened up display settnigs, ran metacity --replace and guess what!. It worked, i had 3 screens and they all worked. i could drag the display settings window across all three screens!

so whats next?

D (360-dennis)
Changed in compiz (Ubuntu):
status: Incomplete → New
D (360-dennis)
information type: Private → Public
Revision history for this message
penalvch (penalvch) wrote :

D, given you have a WORKAROUND, I would recommend using that going forward until a fix for the issue is provided. There seems to be something strange going on with the compiz upstream bug tracker, so I would recommend holding off on filing a report there until it's resolved.

Changed in compiz (Ubuntu):
status: New → Triaged
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

If your desktop is larger than GL_MAX_TEXTURE_SIZE (sounds unlikely) then you need to have the "Copy to texture" plugin enabled in Compiz to work around that (if I recall correctly). Although your max texture size is likely quite large enough and that plugin was enabled by default in Unity7 last I checked...

Revision history for this message
D (360-dennis) wrote :

I wouldn't say it's a workaround, after I installed en ran "metacity --replace", I experienced;
- the unity task bar was gone, as well as the launchbar
- the keyboard wasn't recognized anymore (?)
- When I killed the process metacity, the unity desktop didn't return.

For troubleshoot purposes (as I saw all three screens), it's usefull I think. But it's not a workaround as it's unusable (at least at the way I used metacity).

I will look at the stuff Daniel mentioned (although I don't know what he's talking about), but it will be after the weekeind because we have a big network migration today and the whole weekend.

D

Revision history for this message
penalvch (penalvch) wrote :

D, when using Metacity, it is assumed one would use GNOME Flashback (Metacity), not Unity.

Revision history for this message
D (360-dennis) wrote :

Ok, so i checked. "copy to texture" is on in compiz configuration manager.

And i installed gnome flashback;
http://www.webupd8.org/2014/04/how-to-install-and-tweak-gnome.html

It seems gnome flashback-metacity does work. alle the other options (gnome/gnome-compiz) do not work.

For me it's not an issue as i just use the 2 main 4k displays and don't need the laptop screen. so i already have a workaround, i just wanted to contribute. Do i need to run further tests?

Revision history for this message
penalvch (penalvch) wrote :

D, FYI gnome-session-flashback is a supported package in Ubuntu, so using a PPA (not supported in Ubuntu) is not necessary:
apt-cache policy gnome-session-flashback
gnome-session-flashback:
  Installed: 1:3.14.0-3ubuntu11
  Candidate: 1:3.14.0-3ubuntu11
  Version table:
 *** 1:3.14.0-3ubuntu11 0
        500 http://us.archive.ubuntu.com/ubuntu/ vivid/universe amd64 Packages
        100 /var/lib/dpkg/status

Revision history for this message
Will Cooke (willcooke) wrote :

As part of the big bug clear up for 16.04 LTS I am marking this bug as Wont Fix.
These types of crasher are better handled by errors.ubutnu.com which can collate similar crash reports to help us identify persitent bugs rather than one-off crashes.
Sorry we are not able to help with this specific issue. If you are still experiencing this crash, please re-open the bug and add the tag "desktop-bugscrub-reopened". See https://wiki.ubuntu.com/BigDesktopBugScrub for more information.

Changed in compiz:
status: New → Won't Fix
Changed in compiz (Ubuntu):
status: Triaged → Won't Fix
tags: added: desktop-bugscrub-autoclosed
Revision history for this message
D (360-dennis) wrote :

I'm not sure how to proceed. I think it is a bug as i still experience this behaviour (although i seem to be the only one, but that may be because 2x 4k screens are not that common (yet)).

But how do i reopen this bug? I can't change the status and i can't find a closed/open button.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Reopened.

Changed in compiz:
status: Won't Fix → New
Changed in compiz (Ubuntu):
status: Won't Fix → New
tags: added: desktop-bugscrub-reopened
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Sorry about that. We should have been more careful with recent bugs, which are obviously more current.

summary: connecting 2x 4k screens on a Dell XPS12 (9Q33): compiz crashed with
- SIGSEGV in GLTexture::matrix()
+ SIGSEGV in GLTexture::matrix() from GLScreen::glPaintCompositedOutput
Revision history for this message
Will Cooke (willcooke) wrote :

As part of the big bug clear up for 16.04 LTS I am marking this bug as Wont Fix.
These types of crasher are better handled by https://errors.ubuntu.com/ which can collate similar crash reports to help us identify persitent bugs rather than one-off crashes.
Sorry we are not able to help with this specific issue. If you are still experiencing this crash, please re-open the bug and add the tag "desktop-bugscrub-reopened". See https://wiki.ubuntu.com/BigDesktopBugScrub for more information.

Changed in compiz:
status: New → Won't Fix
Changed in compiz (Ubuntu):
status: New → Won't Fix
Changed in compiz:
status: Won't Fix → Triaged
Changed in compiz (Ubuntu):
status: Won't Fix → Triaged
tags: removed: desktop-bugscrub-autoclosed
Revision history for this message
Will Cooke (willcooke) wrote :

Please ignore that last comment. Seems there is a bug in the script.

Revision history for this message
D (360-dennis) wrote :

No Problem, in the light of a general cleanup it's good to just close it to see if there are any reactions, especially when there is just one person (=me) is reporting the bug.

Just let me know if i can test stuff. Soon i'll have another hardware laptop to test it with, I will try to reproduce it with 15.10 as soon as it's coming out. I'm not experienced (or brave) enough to try the beta builds.

Revision history for this message
D (360-dennis) wrote :

So i tried a new clean install with 15.10 and now it works very nicely! I'm suspecting the upgrades from 14.10/15.04 or the troubleshooting steps have broken something.

I also got a reason why the 2x4k and 1x2k resolution does not work;
"exceeds 3D hardware limit (8191, 8192)"
I made a screenshot of the full error.

I'm still curious if this could be fixed in Ubuntu as it does seem to work in Windows. It might not be a serious issue and not at all required for me, but if this proves to be an underlying issue in Ubuntu with higher resolutions this might be a problem in the future with all the high-res screens that are coming.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

That hardware limit is what the "Copy to texture" plugin was designed to overcome, IIRC.

The limit is literally just the maximum size of a texture your GPU/driver can handle. If the OS/display server is clever, it should be able to manage textures within that limit without also limiting the size of your desktop. However it's been a few years since I worked on Compiz and I can't remember how/if Compiz really did that well. It's not surprising Windows can do it.

The good news is that normally the OS/display server actually doesn't have to solve this problem. On most common basic hardware (Intel GPUs) these days the GL_MAX_TEXTURE_SIZE is more like 16384. That said, it is a problem we're aware of and hope Mir/Unity8 does not have when it enters common usage.

So things to try:
  * Check your Compiz plugins and that "Copy to texture" etc is enabled.
  * Try reconfiguring with the "arandr" command some people say helped them with this.
  * If all else fails (and we definitely don't expect Compiz to get further fixes on this) then try a new cheap graphics card that will almost certainly have a higher GL_MAX_TEXTURE_SIZE of at least 16384.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Also, 2x4k should fit within your 8192 limit. If you move or remove the 2k monitor and just place it logically above/below the 2x4k displays then you won't hit the problem. 'arandr' should help with that, if not the usual "System Settings > Screen Display" and drag the 2k display to a new location above or below the others.

Revision history for this message
D (360-dennis) wrote :

Seems my respons was lost: i gave a reply to the emailalert, but it didn't make it to launchpad i see.

So here it is once more;
-------
So, nice to have finally explained this issue, as far im concerned you can set this bug to resolved. It gets handled nicely on a new install of 15.10 and correct message and not crashing.

Things i did;
- copy to texture is on
- i didn't run arandr, too complex for me (i am just a newbee on linux).
- i placed the 3rd screen at the bottom and even while the screen was activated and i had 3 screens, the whole screen froze (even though music kept playing).

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Crashing fixed in Ubuntu 15.10 according to comment #24.

Changed in compiz:
importance: Undecided → Medium
status: Triaged → Fix Released
Changed in compiz (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Sinclair Yeh (sinclair-yeh) wrote :

Hi, has anyone tried this on 16.04 with the software rasterizer (swrast_dri.so)?

I'm seeing the same crash with with four 2560x1600 displays on Compiz 0.9.12.2.

The crash happens in libopengl.so when it tries to deference "priv"

  const GLTexture::Matrix &
  GLTexture::matrix () const
  {
      return priv->matrix;
  }

In GDB, it's clear that "priv" is pointing to an invalid memory location.

"Copy to Texture" is set to ON by default, and I've verified it with the configuration manager. The same configuration works with a HW accelerated driver.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

It appears swrast has GL_MAX_TEXTURE_SIZE = 8192, so yes 2560x4 exceeds that. Not sure why "Copy To Texture" isn't helping to fix it.

What if you only use three displays instead of four? Does it work then?

To post a comment you must log in.