Re: gdm and xorg from testing...

2007-07-09 Thread Emanuele Rocca
* BERTRAND Joël [EMAIL PROTECTED], [2007-07-03 14:02 +0200]:
 Emanuele Rocca a écrit :
 XineramaIsActive returns TRUE, but XineramaQueryScreens returns a NULL
 pointer and a number of screens = 0, so maybe the bug is in
 XineramaQueryScreens?

   Yes I think, because some other X programs crash.

It seems that the problem lies in XineramaIsActive: it should return
True only when the video driver actually speaks xinerama (which is not
the case for xserver-xorg-video-sunffb).

Bug forwarded upstream:
https://bugs.freedesktop.org/show_bug.cgi?id=11504

ciao,
ema


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: gdm and xorg from testing...

2007-07-03 Thread BERTRAND Joël

Emanuele Rocca a écrit :

Hello BERTRAND,

* BERTRAND Joël [EMAIL PROTECTED], [2007-07-02 20:09 +0200]:

Xorg works fine, but gdm cannot start. I can see in /var/log/syslog :
 
 Jul  2 15:22:08 fermat gdm[7287]: Xinerama active, but = 0 screens?
 Jul  2 15:22:09 fermat gdm[7286]: gdm_child_action : abandon de 
 l'affichage :0
 
 	I don't understand this message. I don't use Xinerama. I have tried 
 	to add a ServerFlas section in xorg.conf with Option Xinerama false 
 without any success.


It seems that gdm doesn't check the values returned by
XineramaQueryScreens.

libgtk's approach in a similar situation is to assume there's no
Xinerama if the number of monitors returned by XineramaQueryScreen is
= 0.

Please try the attached patch, works fine here.


	Thanks a lot, your patch works fine for me. The main question is now : 
why this bug only occurs on sparc64 ?


Regards,

JKB


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: gdm and xorg from testing...

2007-07-03 Thread BERTRAND Joël

Hello,

	This bug comes from xorg. Indeed, I have tried to start xscreensaver 
and it returns :


munmap(0xf7f82000, 8192)= 0
munmap(0xf77ee000, 286720)  = 0
writev(3, [{b\0\0\4\0\10\0, 8}, {XINERAMA, 8}], 2) = 16
read(3, 0xfffa3580, 32) = -1 EAGAIN (Resource 
temporarily unavailable)

poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, \1\2\0\\0\0\0\0\1\233\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0..., 32) 
= 32

write(3, \233\4\0\1, 4)   = 4
read(3, \1\2\0#\0\0\0\0\0\0\0\1\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0..., 
32) = 32

write(3, \233\5\0\1, 4)   = 4
read(3, 0xfffa36c0, 32) = -1 EAGAIN (Resource 
temporarily unavailable)

poll([{fd=3, events=POLLIN, revents=POLLIN}], 1, -1) = 1
read(3, \1\377\0$\0\0\0\0\0\0\0\0\0\31*\240\1\2\0#\1i\207\370\1..., 
32) = 32

--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 9443 detached

I suspect all programs that test Xinerama flags will crash.

JKB


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: gdm and xorg from testing...

2007-07-03 Thread Emanuele Rocca
Hi Joël (I'm not sure if your first name is Joël or Bertrand).

* BERTRAND Joël [EMAIL PROTECTED], [2007-07-03 13:17 +0200]:
 I suspect all programs that test Xinerama flags will crash.

XineramaIsActive returns TRUE, but XineramaQueryScreens returns a NULL
pointer and a number of screens = 0, so maybe the bug is in
XineramaQueryScreens?

What's your video card? If it's a creator, is there someone with a
different video card which can test if gdm works correctly without
patches?

Thanks.
ciao,
ema


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: gdm and xorg from testing...

2007-07-03 Thread BERTRAND Joël

Emanuele Rocca a écrit :

Hi Joël (I'm not sure if your first name is Joël or Bertrand).


First name is Joël ;-)


* BERTRAND Joël [EMAIL PROTECTED], [2007-07-03 13:17 +0200]:

I suspect all programs that test Xinerama flags will crash.


XineramaIsActive returns TRUE, but XineramaQueryScreens returns a NULL
pointer and a number of screens = 0, so maybe the bug is in
XineramaQueryScreens?


Yes I think, because some other X programs crash.


What's your video card? If it's a creator, is there someone with a
different video card which can test if gdm works correctly without
patches?


	I only have creator3D (UPA like PCI connectors on U60 and U80, and UPA 
like mbus on U2).


Regards,

JKB


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of unsubscribe. Trouble? Contact [EMAIL PROTECTED]



Re: gdm and xorg from testing...

2007-07-02 Thread Emanuele Rocca
Hello BERTRAND,

* BERTRAND Joël [EMAIL PROTECTED], [2007-07-02 20:09 +0200]:
   Xorg works fine, but gdm cannot start. I can see in /var/log/syslog :
  
  Jul  2 15:22:08 fermat gdm[7287]: Xinerama active, but = 0 screens?
  Jul  2 15:22:09 fermat gdm[7286]: gdm_child_action : abandon de 
  l'affichage :0
  
   I don't understand this message. I don't use Xinerama. I have tried 
   to add a ServerFlas section in xorg.conf with Option Xinerama false 
  without any success.

It seems that gdm doesn't check the values returned by
XineramaQueryScreens.

libgtk's approach in a similar situation is to assume there's no
Xinerama if the number of monitors returned by XineramaQueryScreen is
= 0.

Please try the attached patch, works fine here.

ciao,
ema
--- gdm-2.18.2.old/daemon/slave.c	2007-07-02 21:22:15.0 +0200
+++ gdm-2.18.2/daemon/slave.c	2007-07-02 21:25:49.0 +0200
@@ -979,30 +979,32 @@
 			XineramaQueryScreens (display-dsp,
 	  screen_num);
 
+if (xscreens) {
+if G_UNLIKELY (screen_num = 0)
+gdm_fail (Xinerama active, but = 0 screens?);
+
+if (screen_num = gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN))
+gdm_set_value_int (GDM_KEY_XINERAMA_SCREEN, 0);
+
+xineramascreen = gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN);
+
+display-screenx = xscreens[xineramascreen].x_org;
+display-screeny = xscreens[xineramascreen].y_org;
+display-screenwidth = xscreens[xineramascreen].width;
+display-screenheight = xscreens[xineramascreen].height;
+
+display-lrh_offsetx =
+DisplayWidth (display-dsp,
+  DefaultScreen (display-dsp))
+- (display-screenx + display-screenwidth);
+display-lrh_offsety =
+DisplayHeight (display-dsp,
+   DefaultScreen (display-dsp))
+- (display-screeny + display-screenheight);
 
-		if G_UNLIKELY (screen_num = 0)
-			gdm_fail (Xinerama active, but = 0 screens?);
-
-		if (screen_num = gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN))
-			gdm_set_value_int (GDM_KEY_XINERAMA_SCREEN, 0);
-
-		xineramascreen = gdm_get_value_int (GDM_KEY_XINERAMA_SCREEN);
-
-		display-screenx = xscreens[xineramascreen].x_org;
-		display-screeny = xscreens[xineramascreen].y_org;
-		display-screenwidth = xscreens[xineramascreen].width;
-		display-screenheight = xscreens[xineramascreen].height;
-
-		display-lrh_offsetx =
-			DisplayWidth (display-dsp,
-  DefaultScreen (display-dsp))
-			- (display-screenx + display-screenwidth);
-		display-lrh_offsety =
-			DisplayHeight (display-dsp,
-   DefaultScreen (display-dsp))
-			- (display-screeny + display-screenheight);
+XFree (xscreens);
+}
 
-		XFree (xscreens);
 	} else
 #elif HAVE_SOLARIS_XINERAMA
  /* This code from GDK, Copyright (C) 2002 Sun Microsystems */