Fix all Valgrind errors: uninitialized values and memory leak
This commit resolves all Valgrind errors reported in the test run: 1. Fixed uninitialized 'removed' array in tcp_translate_events (tcp.c:179) - Added memset to initialize the array to zero before use 2. Fixed uninitialized RequestQueue in client initialization (client.c) - Added initialization of metadata_server.reqs and chunk_servers[].reqs - Added forward declaration of request_queue_init function 3. Fixed uninitialized descriptor generation field (system.c:324) - Initialize generation to 0 when creating process descriptors - Prevents uninitialized value errors in handle_to_desc 4. Fixed 34-byte memory leak in tcp_context_free (tcp.c:91-103) - Added cleanup of connection byte queues when freeing TCP context - Frees both input and output ByteQueues for all connections All Valgrind errors have been resolved: - ERROR SUMMARY: 0 errors from 0 contexts - All heap blocks freed - no leaks possible
This commit is contained in:
@@ -91,6 +91,9 @@ struct TinyDFS {
|
||||
Operation operations[MAX_OPERATIONS];
|
||||
};
|
||||
|
||||
// Forward declaration
|
||||
static void request_queue_init(RequestQueue *reqs);
|
||||
|
||||
TinyDFS *tinydfs_init(char *addr, uint16_t port)
|
||||
{
|
||||
TinyDFS *tdfs = sys_malloc(sizeof(TinyDFS));
|
||||
@@ -118,6 +121,18 @@ TinyDFS *tinydfs_init(char *addr, uint16_t port)
|
||||
for (int i = 0; i < MAX_OPERATIONS; i++)
|
||||
tdfs->operations[i].type = OPERATION_TYPE_FREE;
|
||||
|
||||
// Initialize metadata server
|
||||
tdfs->metadata_server.used = true;
|
||||
tdfs->metadata_server.addr = addr2;
|
||||
request_queue_init(&tdfs->metadata_server.reqs);
|
||||
|
||||
// Initialize chunk servers
|
||||
tdfs->num_chunk_servers = 0;
|
||||
for (int i = 0; i < MAX_CHUNK_SERVERS; i++) {
|
||||
tdfs->chunk_servers[i].used = false;
|
||||
request_queue_init(&tdfs->chunk_servers[i].reqs);
|
||||
}
|
||||
|
||||
return tdfs;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user