|
@@ -96,6 +96,7 @@
|
|
|
<listitem><para>debug_object_deactivate</para></listitem>
|
|
|
<listitem><para>debug_object_destroy</para></listitem>
|
|
|
<listitem><para>debug_object_free</para></listitem>
|
|
|
+ <listitem><para>debug_object_assert_init</para></listitem>
|
|
|
</itemizedlist>
|
|
|
Each of these functions takes the address of the real object and
|
|
|
a pointer to the object type specific debug description
|
|
@@ -273,6 +274,26 @@
|
|
|
debug checks.
|
|
|
</para>
|
|
|
</sect1>
|
|
|
+
|
|
|
+ <sect1 id="debug_object_assert_init">
|
|
|
+ <title>debug_object_assert_init</title>
|
|
|
+ <para>
|
|
|
+ This function is called to assert that an object has been
|
|
|
+ initialized.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ When the real object is not tracked by debugobjects, it calls
|
|
|
+ fixup_assert_init of the object type description structure
|
|
|
+ provided by the caller, with the hardcoded object state
|
|
|
+ ODEBUG_NOT_AVAILABLE. The fixup function can correct the problem
|
|
|
+ by calling debug_object_init and other specific initializing
|
|
|
+ functions.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ When the real object is already tracked by debugobjects it is
|
|
|
+ ignored.
|
|
|
+ </para>
|
|
|
+ </sect1>
|
|
|
</chapter>
|
|
|
<chapter id="fixupfunctions">
|
|
|
<title>Fixup functions</title>
|
|
@@ -381,6 +402,35 @@
|
|
|
statistics.
|
|
|
</para>
|
|
|
</sect1>
|
|
|
+ <sect1 id="fixup_assert_init">
|
|
|
+ <title>fixup_assert_init</title>
|
|
|
+ <para>
|
|
|
+ This function is called from the debug code whenever a problem
|
|
|
+ in debug_object_assert_init is detected.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ Called from debug_object_assert_init() with a hardcoded state
|
|
|
+ ODEBUG_STATE_NOTAVAILABLE when the object is not found in the
|
|
|
+ debug bucket.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ The function returns 1 when the fixup was successful,
|
|
|
+ otherwise 0. The return value is used to update the
|
|
|
+ statistics.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ Note, this function should make sure debug_object_init() is
|
|
|
+ called before returning.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ The handling of statically initialized objects is a special
|
|
|
+ case. The fixup function should check if this is a legitimate
|
|
|
+ case of a statically initialized object or not. In this case only
|
|
|
+ debug_object_init() should be called to make the object known to
|
|
|
+ the tracker. Then the function should return 0 because this is not
|
|
|
+ a real fixup.
|
|
|
+ </para>
|
|
|
+ </sect1>
|
|
|
</chapter>
|
|
|
<chapter id="bugs">
|
|
|
<title>Known Bugs And Assumptions</title>
|