And a glib bug it should be, IMHO, because (a) no message loop is created which can activate recursion; (b) no recustion takes place (verified); and (c) even if a there was a recursion, the source event conditions are not met: these G_IO_IN-s come without any data to read, which is a bug by itself.
I would not expect a rapid response from glib but has this at least been submitted as a bug.
A geany work around would be nice, but as pointed out this should really be fixed at source and the last working version of glib2 is now rather old and really a feasible downgrade.