Steam for Linux > 一般討論 > 主題細節
Mushy 2012 年 12 月 3 日 @ 下午 12 時 47 分
Serious Sam 3 doesn't start
Hello,

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; 2012 年 12 月 3 日 @ 下午 12 時 47 分
顯示 1-9,共 9 則回應
< >
AlenL 2012 年 12 月 3 日 @ 下午 3 時 08 分 
Tried another window manager?
Mushy 2012 年 12 月 4 日 @ 上午 11 時 19 分 
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.
最後修改者:Mushy; 2012 年 12 月 4 日 @ 下午 2 時 09 分
AlenL 2012 年 12 月 4 日 @ 下午 2 時 07 分 
Have you considered reporting the problem to the developers of your window manager?
Mushy 2012 年 12 月 4 日 @ 下午 2 時 09 分 
AlenL 發表:
Have you considered reporting the problem to the developers of your window manager?
I've just update my previous post with more informations.
最後修改者:Mushy; 2012 年 12 月 4 日 @ 下午 2 時 09 分
AlenL 2012 年 12 月 4 日 @ 下午 2 時 13 分 
Interesting. We are working on using lspci instead of libpci, which should prevent issues like this. Thanks for the report!
DarkStarSword 2012 年 12 月 9 日 @ 下午 9 時 21 分 
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[raw.github.com] 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; 2012 年 12 月 9 日 @ 下午 9 時 37 分
DarkStarSword 2012 年 12 月 9 日 @ 下午 9 時 52 分 
@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 2012 年 12 月 10 日 @ 上午 10 時 44 分 
@darkstarsword Thank you for this explication.

Shutting down X isn't sufficient but after a complete restart the problem reappear, indeed.
AlenL 2012 年 12 月 11 日 @ 上午 4 時 19 分 
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
張貼日期: 2012 年 12 月 3 日 @ 下午 12 時 47 分
回覆: 9