Modify ↓
#374 closed defect (fixed)
Processes don't die in ForkDaemon + GLib mode
Reported by: | wilmer | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | 1.2.1 |
Component: | BitlBee | Version: | 1.2 |
Keywords: | Cc: | ||
IRC client+version: | Client-independent | Operating System: | Public server |
OS version/distro: |
Description
When a user disconnects, the child process doesn't actually die when using ForkDaemon mode and using GLib for event handling. With libevent, there's no problem.
(On testing.bitlbee.org I always use libevent so I never noticed this so far...)
Attachments (0)
Change History (4)
comment:1 Changed at 2008-03-19T10:51:16Z by
Priority: | major → critical |
---|
comment:2 Changed at 2008-03-21T00:51:19Z by
comment:4 Changed at 2008-03-22T12:05:20Z by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Oh, forgot to actually close the bug. The fix isn't that hairy, but may break if GLib ever switches to something more advanced than poll()/select(). I doubt if they'll ever do that, since epoll() and friends exist for *years* already. Probably not worth it.
Note: See
TracTickets for help on using
tickets.
Most likely found the problem. b_main_quit() is called to exit the main loop, but in fork daemon a new main loop is created for the subprocess, without forcing BitlBee into entering that loop. IOW, BitlBee tells GLib to exit a loop that isn't even active yet.
May get a bit hairy to fix this...