Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On 11/21/2011 01:30 PM, Caolán McNamara wrote:
On Fri, 2011-11-18 at 15:25 +0100, Stephan Bergmann wrote:

Alright, so we end up with
use assert if you want an assert
SAL_WARN if you want to warn about something odd, but which isn't
necessarily definitely wrong
SAL_INFO for verbose logging

Practical question though, is on windows where does the output go ?

SAL_INFO/WARN just go to stderr for now. What should work to see them even for a gui soffice.exe is to add something like 2>log.txt to the command line. Not sure if there is enough of a Windows developer base that demands a more sophisticated solution? (One could extend the SAL_LOG environment variable, so that a trailing ">file" part would append the data to a given file, for example. Or see to hook up Window' OutputDebugString.)

Should we write off all the DBG_ASSERTs as hopeless to unwind and mass
convert them all to SAL_WARNs ?

I would initially file an easy hack to do the conversion. If that does not lead to clean-up in a reasonable time-frame, I would suggest to mass-convert the remainder to SAL_WARN.

How do we feel about code that does e.g.

assert(pFoo);
if (!pFoo)
     throw catchAbleFoo("wtf");

i.e. do we have a philosophical problem with gracefully/semi-gracefully
handing should-be impossible cases ?

I think that's a perversion, and should be avoided. It the author could not convince himself that !pFoo is not impossible (modulo bugs), then he should use OSL_WARN instead. If however he *is* convinced that !pFoo is impossible absent any bugs, but argues that if there *are* bugs, the added if statement adds some sort of safety, I would counter-argue that this alleged safety net pointlessly increases complexity and is probably full of holes and inconsistencies anyway (as it is likely an extremely untested code path).

Such defensive programming IMO would need to be architected into the code from the beginning. It makes little sense to add such things locally just here and there. And I'm not even convinced LO is an application for which an elaborate defensive programming architecture would be justified. If there is a bug, crash early. (One thing we could IMO improve though, is to not rely on trying to save open documents from within a signal handler, but instead rely on frequent auto-save and roll back to the last saved version after a crash.)

Stephan

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.