goto end_rep;
}
else if(!strcmp(received_msg, "NOTFOUND")) {
- WARN("For buffer %s, the trace was not found. This likely means it was destroyed by the user.", buf->name);
- retval = GET_SUBBUF_DONE;
+ DBG("For buffer %s, the trace was not found. This likely means it was destroyed by the user.", buf->name);
+ retval = GET_SUBBUF_DIED;
goto end_rep;
}
else {
retval = PUT_SUBBUF_OK;
}
else if(!strcmp(received_msg, "NOTFOUND")) {
- WARN("For buffer %s, the trace was not found. This likely means it was destroyed by the user.", buf->name);
+ DBG("For buffer %s, the trace was not found. This likely means it was destroyed by the user.", buf->name);
/* However, maybe this was not the last subbuffer. So
* we return the program died.
*/
result = patient_write(buf->file_fd, subbuf_mem, cur_sb_size);
if(result == -1) {
PERROR("write");
- /* FIXME: maybe drop this trace */
return -1;
}
}
/* write data to file */
- write_current_subbuffer(buf);
- /* FIXME: handle return value? */
+ result = write_current_subbuffer(buf);
+ if(result == -1) {
+ ERR("Failed writing a subbuffer to file (channel=%s). Dropping this buffer.", buf->name);
+ }
/* put the subbuffer */
result = put_subbuffer(buf);
break;
}
else if(result == PUT_SUBBUF_DIED) {
- WARN("application died while putting subbuffer");
+ DBG("application died while putting subbuffer");
/* Skip the first subbuffer. We are not sure it is trustable
* because the put_subbuffer() did not complete.
*/
consumer_loop(buf);
- free(args->bufname);
+ free((void *)args->bufname);
destroy_buffer(buf);
end:
- /* bufname is free'd in free_buffer() */
free(args);
return NULL;
}