Fix: wrong loop continuation in metadata thread
authorDavid Goulet <dgoulet@efficios.com>
Thu, 10 Jan 2013 15:18:31 +0000 (10:18 -0500)
committerDavid Goulet <dgoulet@efficios.com>
Thu, 10 Jan 2013 15:18:31 +0000 (10:18 -0500)
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 <jesus.garcia@ericsson.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/common/consumer.c

index 27dfe32b8592487e6c5e881604a650085240f536..935a03d235fee67a32f1f6bd14fa7c9bdf65845d 100644 (file)
@@ -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",
This page took 0.029668 seconds and 4 git commands to generate.