Block continues after EOF

Dear List,

I have another problem with stopping my C++ block. My block receives
blobs
of bytes as messages over the new message passing interface and outputs
them as a byte stream. At some place I receive an EOF message, set a
flag
and continue to empty my buffer in the work method. Once the buffer is
empty I signal EOF to the flowgraph by returning -1 from general_work.
However after that my work function keeps getting called.

My general_work function looks like this:

int general_work(int noutput_items, gr_vector_int& ninput_items,
gr_vector_const_void_star& input_items, gr_vector_void_star&
output_items)
{
printf(“work function called\n”);

if(d_stop && d_queue.size() == 0) {
// signal EOF
printf(“Signal EOF\n”);
return -1;
}

    int num_out;

// Generate the actual output
// …

return num_out;
}

And the output I get looks like this:
work function called
work function called
work function called
Signal EOF
work function called
work function called
work function called
work function called

Until I stop the whole flowgraph with Ctrl+C

What am I missing here? If I understood correctly the work function
should
not be called anymore after signalling EOF, since there is by definition
of EOF, nothing more to get.

Yours
Martin

work function called
of EOF, nothing more to get.

Yours
Martin

Oh boy, starting again with a clear head this morning I found my mistake
almost immediately. In fact I had another instance of the same block
running, so the output I posted was actually from two blocks from which
one exited as expected, the other one kept running.

Sorry for the false alarm,
Martin