From: Chris Smowton Date: Wed, 18 Nov 2009 17:49:12 +0000 (-0500) Subject: LTTV trace control bug fix X-Git-Tag: v0.12.26~81 X-Git-Url: https://git.lttng.org/?a=commitdiff_plain;h=667dfdfea7441f2b7cf0d36f6ac7965b27dc768d;hp=667dfdfea7441f2b7cf0d36f6ac7965b27dc768d;p=lttv.git LTTV trace control bug fix Chris Smowton : ...whenever I tried to start a trace using the GUI, it would freeze consuming 100% CPU after I clicked "start". Turned out this was because in tracecontrol.c's start_clicked callback, you poll(2) on an FD and use a switch() statement to handle its return. Unfortunately, poll(2) doesn't work that way -- it returns a *mask* of bits, not a single value. Here poll was returning POLLIN | POLLHUP to indicate there's data ready and the FD has been closed by the other side, and since this != POLLIN and != POLLHUP, the poll loop spins forever. Attached is a patch to be applied to tracecontrol.c which fixes it to check for set-bits instead. It's still strictly broken, as the read(fd, buf, 256) call might not fully drain the child's output, but it's a step in the right direction and means I can at least use the trace-control thing. Signed-off-by: Mathieu Desnoyers ---