[PATCH] do not call _dbus_warn_check_failed on checks
Daniel Stone
daniel at fooishbar.org
Tue Nov 14 11:42:59 PST 2006
On Tue, Nov 14, 2006 at 01:42:43PM -0500, Havoc Pennington wrote:
> Daniel Stone wrote:
> >> - whatever you may think, it is a common and widely-accepted practice
> >> to have functions without a way to report errors when those
> >> functions have no error cases that can happen in a correct program.
> >
> >These functions do not call abort.
>
> They configurably do (or just segfault, in many libs). The only
> difference with libdbus is the default. And recent GNOME even matches
> dbus on that by setting G_DEBUG=fatal_criticals.
Maybe this is a G* thing, but it's not something I've encountered.
> >> - if we want to make "bug in my code" behavior configurable, it's
> >> better to have a global way to set the "bug/log handler function"
> >> than to screw up the whole API with error returns. Or just
> >> make it configurable, say via an environment variable that changes
> >> the behavior when a bug is detected. Kind of like the one we have.
> >
> >Environment variables are a horrific API. If you want to be truly
> >useful, give me dbus_never_abort_my_program().
>
> I have no objection to adding dbus_set_bug_handler() that gives your
> handler the string to be logged and returns a value for whether to do
> { default action from env, force abort, force warn, force silent }
>
> Please, anyone is welcome to write that patch.
>
> You can even use it to set a global or thread-local error flag which you
> can then check in your code.
>
> Much saner than a libdbus-2 or passing needless DBusError* to everything.
No, it's actually not saner at all, because it means you need to keep
insane amounts of context around to work out where you were.
Out-of-band error handling for synchronous calls does not make sense.
> >I still don't see why you see error returns as 'screw[ing] up the whole
> >API'. It would at least give us a consistent API, rather than the
> >current random hodgepodge where some functions take a GError, some
> >don't, some may fail randomly even without a GError, others always
> >succeed, ...
>
> It is not random at all. There is an error if an error can occur, if
> only OOM can occur there is some way to detect that (either NULL or a
> boolean), and if neither error nor OOM can occur there is no indication
> of either.
How do I know, looking at a function, if an error can occur, witout
reading the documentation?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.freedesktop.org/archives/dbus/attachments/20061114/fbe8586b/attachment.pgp
More information about the dbus
mailing list