> assert() macro also behaves in the same manner. It is an usual practice to
> have assert() be a NOOP in production builds. assert()'s normal usage is to
> assert that the expression is TRUE and it _should_ not be considered as a
> replacement for NULL pointer checks. If we want to avoid NULL pointer
> dereferences, it is a good idea to handle such scenarios and bail out
> gracefully.
>>
>>
>> A typical example of this scenario is :
>>
>>
>> GF_ASSERT (shandle);
>> GF_ASSERT (shandle->path);
>>
>> My question is why don't we abort in case of production build? Any
>> specific reason?
>

This question has come before and many times clang checks and other
debugging tools "warn" about NULL deference issues after this macro
has been invoked.

But from what i gather GF_ASSERT in GlusterFS context is much like
BUG_ON for Linux kernel - assert is only necessary during debugging -
a backtrace is valid in case of a crash for production where we get
something called gluster dump synonymous with 'Kernel dump'

I guess we can have much more broader discussion on its implications,
FWIW it was necessary from GlusterFS context to not have "assert()"
with in that macro.

_______________________________________________
Gluster-devel mailing list
Gluster-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/gluster-devel

Reply via email to