From: David Goulet Date: Thu, 10 Jan 2013 15:18:31 +0000 (-0500) Subject: Fix: wrong loop continuation in metadata thread X-Git-Tag: v2.2.0-rc1~123 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=3714380f76f56da2dfce53e07aa4f804a350047c;hp=3dd05a854fd61d14a2c395c0c82678abd63798e9 Fix: wrong loop continuation in metadata thread The validation of the endpoint status can change the metadata hash table meaning stream(s) can be removed from it and the poll set. After that, continuing the for loop was making the thread use possible invalid file descriptor that were not in the hash table anymore trigerring the lookup assert of the node just after the for loop. The very important part here is that when the metadata ht changes, we MUST go back to the poll wait() to synchronize the subset of fd we are looking at. Reported-by: Jesus Garcia Acked-by: Mathieu Desnoyers Signed-off-by: David Goulet --- diff --git a/src/common/consumer.c b/src/common/consumer.c index 27dfe32b8..935a03d23 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2155,7 +2155,7 @@ restart: if (stream == NULL) { /* Check for deleted streams. */ validate_endpoint_status_metadata_stream(&events); - continue; + goto restart; } DBG("Adding metadata stream %d to poll set",