[Libreoffice] OSL_ASSERT - remove backtrace or make abort

Lubos Lunak l.lunak at suse.cz
Tue Apr 19 09:21:17 PDT 2011


 I'd like to remove the backtrace printing from OSL_ASSERT and friends, or, 
even better and if possible, make these functions work properly, i.e. abort 
on failure (I'm not really holding my breath on the second one, but refusing 
that one will at least support the first one).

 When building with debug >= 1, the majority of debug output for me is 
backtraces from debug functions like OSL_ASSERT that uselessly pollute the 
output (I added one OSL_ASSERT last week and it took me several days to 
notice the assertion was always false and the message got lost in all the 
noise around).

 First of all, the backtraces are actually useless even on their own, because 
with today's Linux toolchain backtrace() or dladdr() simply do not work for 
most functions - things like hidden visibility prevent it from working and 
who builds without that these days? That alone could be a good reason for 
removing the backtrace printing, but I find them useless in general. There 
are two ways to look at OSL_ASSERT and friends:

1) they are misnamed debug functions (which is presumably what they really are 
now). Every properly brought up assert function aborts if the condition is 
false, but these are more like debug messages or warnings - OSL_ASSERT 
doesn't assert that much, OSL_ENSURE doesn't ensure anything, they just print 
the error message (and the annoying backtrace) and then return like if 
nothing were nothing wrong. Now, if there's nothing really that wrong, what's 
the point of printing the huge backtrace like if something important 
happened, right? In this case it'd be also nice to get somewhen to renaming 
them to OSL_DEBUG or something so that it doesn't confuse people who expect a 
real assert.

2) they are assert functions, they just don't work right and should be fixed 
to make the app abort and fall flat on its face when the assertion is not 
true (in practice, flip the default on $SAL_DIAGNOSE_ABORT). I expect this 
wouldn't be a simple change, as this would at this time probably mean nobody 
would be able to successfully run LO for some time :), so that'd require a 
transitional period, e.g. similar to how compile warnings are fixed to make 
compilation with -Werror possible. No idea how much effort this would be, 
it's the technically right way, but I don't know if it'd be worth it.


 Lubos Lunak
 l.lunak at suse.cz

More information about the LibreOffice mailing list