Created attachment 139910 [details]
I tried Nouveau (xorg-dri-nouveau-18.1.0 from mesa 18.1.0 and xorg-drv-nouveau-1.0.15) with the latest xorg-1.20 and dual monitors. With single screen and xinerama it works fine, with dual screens (w/o xinerama) it segfaults, see log below.
I want to use separate X screens, since monitors have sufficiently different DPI and color temp and Xinerama doesn't allow different DPI on different monitors.
Kernel in use is 4.6.13 with nouveau built as module.
Created attachment 139913 [details]
Created attachment 139918 [details]
xorg.conf for dual head setup with screens, I tried to remove Option ZaphodHeads and to add Option DRI 3, all attempts results in the same failure as above.
Created attachment 139922 [details]
lspci -v output for the VGA device
Created attachment 139924 [details]
Looks like Nouveau still parties like it's 1999. I don't think more recent drivers do mode setting this early. However, it's easy enough to handle this case by simply skipping the RRCrtcIsLeased and RROutputIsLeased calls when the respective DIX objects haven't been created yet. Here's a patch which simply wraps those functions in xf86 code that checks for NULL pointers before calling the DIX code.
Created attachment 139958 [details] [review]
xfree86: Wrap RRCrtcIsLeased and RROutputIsLeased to check for DIX structures
I suffer from the same problem - crash on startup.
The backtrace is identical (attaching).
The circumstances are the same - I have four monitors with two nvidia cards using nouveau driver.
I am using xinerama.
After applying your patch the backtrace is different:
double free or corruption (!prev)
(EE) 0: /usr/lib/xorg/Xorg (xorg_backtrace+0x4a) [0x5637ad9347da]
(EE) 1: /usr/lib/xorg/Xorg (0x5637ad780000+0x1b8489) [0x5637ad938489]
(EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7efc039f4000+0x11f50) [0x7efc03a05f50]
(EE) 3: /lib/x86_64-linux-gnu/libc.so.6 (gsignal+0x10b) [0x7efc0366ee7b]
(EE) 4: /lib/x86_64-linux-gnu/libc.so.6 (abort+0x151) [0x7efc03670231]
(EE) 5: /lib/x86_64-linux-gnu/libc.so.6 (0x7efc0363a000+0x777b7) [0x7efc036b17b7]
(EE) 6: /lib/x86_64-linux-gnu/libc.so.6 (0x7efc0363a000+0x7dd5a) [0x7efc036b7d5a]
(EE) 7: /lib/x86_64-linux-gnu/libc.so.6 (0x7efc0363a000+0x7f81c) [0x7efc036b981c]
(EE) 8: /usr/lib/xorg/Xorg (PanoramiXCreateConnectionBlock+0x20a) [0x5637ad87f98a]
(EE) 9: /usr/lib/xorg/Xorg (0x5637ad780000+0x609e1) [0x5637ad7e09e1]
(EE) 10: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xe7) [0x7efc0365ba87]
(EE) 11: /usr/lib/xorg/Xorg (_start+0x2a) [0x5637ad7ca6ca]
Attaching a full log.
Created attachment 140621 [details]
backtrace before any patch
Created attachment 140622 [details]
full Xorg log after patching