Updated patch

John (J5) Palmieri johnp at redhat.com
Tue Apr 18 06:35:00 PDT 2006


On Mon, 2006-04-17 at 21:50 -0400, Tim Moloney wrote:
> John (J5) Palmieri wrote:
> > On Mon, 2006-04-17 at 15:50 -0400, Tim Moloney wrote:
> >   
> >> On Mon 2005-12-05 at 13:56:07 PST, Havoc Pennington wrote:
> >>
> >>  > On Mon, 2005-12-05 at 13:33 +0000, Matthew Johnson wrote:
> >>  >>
> >>  >> 8853: assertion failed "(*(const char*)_DBUS_FUNCTION_NAME) != '_'" 
> >> file "dbus-connection.c" line 2877 function 
> >> _dbus_connection_read_write_dispatch
> >>  >>
> >>  >> Which appears to enforce that _dbus_return_val_if_fail can only be
> >>  >> called from functions that don't start with an underscore. I have no
> >>  >> idea why this is, but have accordingly moved the calls to that into the
> >>  >> wrapper functions.
> >>  >
> >>  > The underscore functions are internal/private, and return_if_fail should
> >>  > only be used to check correctness of arguments to public API. For
> >>  > private API, just use dbus_assert() (and be sure public API that calls
> >>  > the private API has return_if_fail so we don't hit the assert when
> >>  > checks are enabled)
> >>
> >> I found the above in the list archive.
> >>
> >> If I understand it correctly, then the asserts are incorrect in 
> >> dbus_connection_read_write, dbus_connection_read_write_dispatch, and 
> >> _dbus_connection_read_write_dispatch.  I've attached a patch that I 
> >> believe corrects the problem.  I think this is what Matthew Johnson said 
> >> he did to get these functions working.  This patch works on my FC5 
> >> system but should be tested more thoroughly.
> >>
> >> On a related note, the FC5 spec file is producing code with the asserts 
> >> enabled although the spec file appears to be only enabling the asserts 
> >> for a 'make check' run.  I mention this in case anyone here has 
> >> influence over the FC5 spec file (and can figure out why it's enabling 
> >> asserts).
> >>     
> >
> > To catch errors. I don't think I will take them out until we hit 1.0.
> >
> >   
> The asserts weren't taken out.  They were moved from the one internal 
> work method (see above, where Havoc Pennington said they don't belong) 
> to the two wrapper methods (where he said they do belong) which are the 
> only two methods that calls the internal work method.
> 
> I don't believe there is a change in function or loss of capability.  
> Without the patch, I don't see how dbus_connection_read_write and 
> dbus_connection_read_write_dispatch can ever work with asserts enabled. 
> 
> The patch corrects a problem which is unfortunately compounded by the 
> broken FC5 spec file.

I was referring to the spec file in my last comment.  No it is not
broken.  The asserts are turned on to catch errors - in this case an
error with the assert code itself but more importantly to catch what
could be major bugs before we go 1.0.  Patch looks good.  Thanks.

-- 
John (J5) Palmieri <johnp at redhat.com>



More information about the dbus mailing list