Using drbdadm with environment variable MALLOC_CHECK_ set to not zero result in
segmentation fault.
Reason is the handling of most free operations in drbdadm_main.c, notably in
functions free_config, free_host_info and maybe some other more.
Example: function free_host_info
for_each_volume(vol, hi->volumes)
free_volume(vol);
Function free_volume call as last libc function free(vol), which instructs libc
in case of MALLOC_CHECK_ not zero to initialize memory with 0xcc. The macro
for_each_volume take vol->next (which is now 0xcccccccc) as next vol and calls
free_volume again which try to free the memory and this cause the segmentation
fault.
Example of correct behaviour is function free_options, which temporary stores
the next element before freeing it.
There is currently no race condition in free before next, because this part is
not multi threaded.
Questions:
Is there a specific reason for doing that (DRBD 8.3.11 works fine with
MALLOC_CHECK_) in DRBD 8.4.1 ?
Is it planned or a bug ?
Patch ?
Rainer
_______________________________________________
drbd-user mailing list
[email protected]
http://lists.linbit.com/mailman/listinfo/drbd-user