You are not logged in.
I don't use any login manager so I simply boot to a console and start openbox manually via xinit.
However, after upgrade OpenBox fails to exit back to the login console. Anyone experiencing the same? Any idea on how to fix it?
Several programs got updated recently, xinit, openbox,... so I don't know what exactly is causing the problem...
I also have xmonad but that still works fine. So if I have to guess it's openbox's (3.5.0) issue.
Last edited by pingpong (2012-11-01 03:33:29)
Offline
Let me add. I can quit to console only by manually killing the process
/usr/bin/openbox --startup /usr/lib/openbox/openbox-autostart OPENBOX
Offline
Got the same issue now
Certified Android Junkie
Arch 64
Offline
More on the openbox fails to exit issue can be found here:
oz
Offline
Got the same issue now
Same here. (Starting with startx)
BTW: LXDE using the same openbox-installation does not have this issue.
Last edited by fritz (2012-11-01 06:20:22)
Celeron 1610, Intel B75, 4GB Ram, Intel HD-Graphics
Offline
I managed to kluge something that works. However, I am not all that sure where the problem originally comes from. I have a suspicion (without any real foundation) it is related to this problem:
https://mail.gnome.org/archives/gtk-app … 00073.html
Anyway, here is how I got it working (developers will want to fix it some other way)
Go to the source code in openbox-3.5.0/openbox/openbox.c
If you don't have the source you can get it here:
http://openbox.org/wiki/Openbox:Download
In the file openbox.c you will find that the functions ob_exit is using
g_main_loop_quit in order to quit. I think that the threading problem referred to above might occur here.
If not, whatever, an exit(0) after it will work.
Instead, I went a bit further and replaced this with:
g_main_loop_unref
which used to be the main_loop_destroy function and then put an exit(0); after that for good measure :]
Now get rid of the openbox you already have (pacman -R openbox) and then
./configure, make, and make install the one you just modified.
Your openbox should now exit.
Here is what my ob_exit function looks like now:
void ob_exit(gint code)
{
exitcode = code;
g_main_loop_unref(ob_main_loop);
exit(0);
}
This is not a real solution, but better than kill -9 at least until the real openbox guys do a real fix.
Last edited by ATmega328 (2012-11-01 00:41:52)
Offline
Thanks for your efforts. It would be better to create a patch and apply it using makepkg and a modified version of the official openbox PKGBUILD - this would create an openbox package that includes your fix, which could be managed by pacman in the usual way.
Offline
Thanks! But although my solution works and openbox will now exit every time you press the logout button in the menu, it may not be exiting very cleanly. Sticking an exit(0) in there is not very elegant. I am going to read through all of the code and see if I can find something better but I am not very experienced at glib stuff. My hope is that the developers will properly fix it soon but until then people will at least have something that works. Probably people would get mad if I made a patch out of a klugey solution?
Last edited by ATmega328 (2012-11-01 00:56:12)
Offline
I posted a similar reply on the other thread, but noticed that was for [testing].
My kludge is to alter my logout script. It used to have 'kill $OPENBOX_PID'. Now it has 'kill $OPENBOX_PID; kill -9 $OPENBOXPID'.
I'd definitely prefer Openbox be patched in a proper way which allows original scripts to work. On my this also affects oblogout, and menus for various panel systems, so a more holistic fix is definitely worth waiting for.
Offline
Since solutions are given, I mark it solved.
Offline
get same problem here
Offline
@ATmega328
Have you reported the problem and perhaps your solution upstream? I guess Dana Jansens(developer of Openbox) can help with that issue... Thanks for your fix.
Offline
@demaio
I am new here and so I don't know how to do that. Should I email him?
Also, I am interested to know if anyone else here has actually used my fix?
Offline
@demaio
I am new here and so I don't know how to do that. Should I email him?
Also, I am interested to know if anyone else here has actually used my fix?
I did using the ABS and it works fine, thank you for figuring it out.
Last edited by freud_zoid (2012-11-01 15:33:19)
Offline
ATmega328, see the Bug Reports section here.
Offline
Someone has reported it. See bug 5793.
Offline
Ya that was me. I just followed tomk's link.
Offline
well, okay for your effort,,, it fixed now...
Offline
While ATmega328's patch fixes the logout issue, it makes problems related to restarting Openbox. E.g. try to change the number of virtual desktops under Obconf and modify something using Obkey -- you will get DM screen.
Offline
I think this should not be marked as solved yet. It is a serious bug in openbox that is still waiting to be fixed. Let us see what the devs say on the bug tracker. Thanks for reporting it.
Offline
In another thread it was suggested that you could exit Openbox with "pkill -KILL openbox". It seems to work for me, but are there any disadvantages or consequences to this method?
Offline
Because it's not the solution. You can also halt your computer using power switch, but nobody said that's preferred (and correct!) method.
Last edited by Barthalion (2012-11-02 15:02:05)
Offline
It is because exit(0) is not the proper way to exit (as I mentioned above) as it doesn't clean things up properly. I was hoping that putting the unref in there first would do it, but apparently that doesn't do it. Or maybe doesn't have the time before exit(0) kills it. I dunno. However, it works until they fix the actual problem. I am still searching for the source of the problem, but I am having to learn glibc to do it. I will be very interested to look at the "fixed" code once the smarter guys figure it out and patch it. I still think it has to do with the threading problem I linked to above...
Another way to see this is that if you remove just the exit(0) you will see that it will exit some of the time -- still improperly though since it throws a signal "all your base are belong to us" core dump signal from /obt/signal.c. Sometimes you have to click logout a couple of times first. (The reason for the exit(0) is that the other half of the time it doesn't). I guess i should have used exit(1)
Last edited by ATmega328 (2012-11-02 17:03:31)
Offline
Hm, here's a backtrace after running openbox --exit:
#0 0xb76e0424 in __kernel_vsyscall ()
#1 0xb70ba422 in __lll_lock_wait () from /usr/lib/libpthread.so.0
#2 0xb70b5e82 in _L_lock_675 () from /usr/lib/libpthread.so.0
#3 0xb70b5e17 in pthread_mutex_lock () from /usr/lib/libpthread.so.0
#4 0xb7231cf4 in pthread_mutex_lock () from /usr/lib/libc.so.6
#5 0xb7634c10 in g_mutex_lock () from /usr/lib/libglib-2.0.so.0
#6 0xb6fe8348 in ?? () from /usr/lib/libpangoxft-1.0.so.0
#7 0xb6fe87a7 in pango_xft_shutdown_display () from /usr/lib/libpangoxft-1.0.so.0
#8 0xb6fe8887 in ?? () from /usr/lib/libpangoxft-1.0.so.0
#9 0xb748d0f3 in XCloseDisplay () from /usr/lib/libX11.so.6
#10 0xb72e5d86 in obt_display_close () from /usr/lib/libobt.so.0
#11 0x0805487e in main ()
So openbox is calling XCloseDisplay() but it never returns because Pango is stuck trying to clean up?!
Edit: Others noticed it too: https://bugzilla.redhat.com/show_bug.cgi?id=802086#c6
Edit 2: Are there any programmers here? Does this look OK to you? close_display_cb() gets called when the X connection is closed, and it calls pango_xft_shutdown_display() while holding a lock on fontmaps. Then pango_xft_shutdown_display() immediately calls pango_xft_find_font_map(), which also tries to acquire a lock on the already locked fontmaps. Bang!
Last edited by ma (2012-11-02 16:12:05)
Offline
ma, the programmers you need are not here - they're the openbox guys. Add your comments, links, etc to the report that ATmega328 already opened in openbox's tracker.
Offline