Mushy 3 ธ.ค., 2012 @ 12:47pm
Serious Sam 3 doesn't start

SS3 doesn't start with this error:
Atom identifier _NET_WM_STATE_HIDDEN can't be obtained
Steam itself and others games (And yet it moves, TF2, trine 2 and world of Goo) work fine.

Any idea?

System info:
  • Debian Sid 64bits
  • AMD Radeon HD 7800 graphic card with Catalyst drivers 12.6
  • i3 window manager
ได้รับการแก้ไขครั้งสุดท้ายโดย Mushy; 3 ธ.ค., 2012 @ 12:47pm
กำลังแสดง 1-9 จาก 9 ความเห็น
< >
AlenL 3 ธ.ค., 2012 @ 3:08pm 
Tried another window manager?
Mushy 4 ธ.ค., 2012 @ 11:19am 
Originally posted by AlenL:
Tried another window manager?
Thank you for your idea!

Under xfce4, the launcher ask me to install libpci and back to i3, SS3 works fine.
AlenL 4 ธ.ค., 2012 @ 2:07pm 
Have you considered reporting the problem to the developers of your window manager?
Mushy 4 ธ.ค., 2012 @ 2:09pm 
Originally posted by AlenL:
Have you considered reporting the problem to the developers of your window manager?
I've just update my previous post with more informations.
AlenL 4 ธ.ค., 2012 @ 2:13pm 
Interesting. We are working on using lspci instead of libpci, which should prevent issues like this. Thanks for the report!
DarkStarSword 9 ธ.ค., 2012 @ 9:21pm 
Running ss3 under xtrace shows this:
000:<:000a: 28: Request(16): InternAtom only-if-exists=true(0x01) name='_NET_WM_STATE_HIDDEN'
000:>:000a:32: Reply to InternAtom: atom=None(0x0)

_NET_WM_STATE_HIDDEN not existing should not be considered fatal, it merely means that nothing has previously requested an X atom of that name (which in practice means that the Window Manager doesn't know about that property and will just ignore it if it is set on a window).

The simplest fix would be to change only-if-exists to false when requesting the atom (in general, if you ever pass only-if-exists=true to intern_atom() you should be prepared for the case that the atom may not exist. If you are not prepared for that case you should pass false).

@Mushy: Did you completely kill X after logging into xfce4? xfce4 would have created the atom, but it would only persist until X was restarted.

In the meantime, for anyone else hitting this issue, this python script[] will create the atom (requires python-xlib), so running this any time before starting ss3 will workaround the issue and allow ss3 to run:

#!/usr/bin/env python

import Xlib.display

display = Xlib.display.Display()
display.intern_atom('_NET_WM_STATE_HIDDEN', False)
DarkStarSword 9 ธ.ค., 2012 @ 9:52pm 
@AlenL: The libpci/lspci dependency is a separate issue, but I'd be cautious of relying on parsing the output of a command line tool instead of using a library. Command line tools generally don't offer any guarantees that the format of their output won't change in the future since they are primarily intended to be run interactively by a human, while most libraries at least try to retain some API & ABI compatibility to avoid breaking programs that use them.
Mushy 10 ธ.ค., 2012 @ 10:44am 
@darkstarsword Thank you for this explication.

Shutting down X isn't sufficient but after a complete restart the problem reappear, indeed.
AlenL 11 ธ.ค., 2012 @ 4:19am 
darkstarsword, we are aware of the risks. However:
- right now, there are much more people without 32bit libpci than without (or with incompatible) lspci
- this is not a critical function anyway. if it is wrong, your settings are wrong, but the game works
- if it changes, we can patch the game
กำลังแสดง 1-9 จาก 9 ความเห็น
< >
ต่อหน้า: 15 30 50
วันที่โพสต์: 3 ธ.ค., 2012 @ 12:47pm
โพสต์: 9