On Fri, Jan 30, 2009 at 02:47:27PM -0500, Jeff King wrote: > There is also a related set of fixes for spawning externals via fork, > which fixes a bug with the pager not getting cleaned up. But it looks > like it is also in the version you tested. > > Can you give a more complete recipe for reproducing? Since I was just > touching this area in git, I want to make sure it isn't a git bug you > are triggering. :) Ah, OK. I just peeked through the 'eg' source. It looks like you may have replicated the same bug that I just fixed in git. :) You want to make sure that "eg" is the last process to die (i.e., _after_ the pager). Otherwise after it dies, less has trouble reading from the terminal (I don't know for sure, but I assume this has to do with the shell making "eg" the process group leader and magic about process groups and controlling terminals). I think perl may even do the wait() for you under ordinary circumstances. But, for example, if I kill "eg" with a signal (say, by hitting ^C), then it will die but the pager will live on. In git, we catch the signal and wait() before dying. So I don't know for sure that is your problem (it really depends on how much magic perl is doing behind the scenes with wait()ing on children, and I don't recall the exact details of that). But it is something to look into. I don't think it's a git problem, though. "eg log" doesn't spawn a git pager, since you pipe the output into eg. The paging is all your local "less" invocation. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html