Loading ...
Sorry, an error occurred while loading the content.

PDB sync failing

Expand Messages
  • James Costlow
    It looks like PDB sync is failing due to some interaction with IoCoroutine. ... I m not sure when this broke, but PDB and its unit tests did work fine as of
    Message 1 of 2 , Dec 4, 2009
    View Source
    • 0 Attachment
      It looks like "PDB sync" is failing due to some interaction with IoCoroutine.

      It's reproducible just by running the PDB unit tests:

      > > make testaddons
      > ...
      > Obsidian - testBasic
      > testSimpleSync
      > IoCoroutine error: unable to auto abort coro 0x1005ca050 by resuming parent coro Object_0x10022a7d0

      I'm not sure when this broke, but PDB and its unit tests did work fine as of a few months ago. I've entered a bug in the GitHub tracker. I'll look into it if I have the time, but with any luck maybe someone with more experience with the coroutine code can point out something obvious.

      - James
    • James Costlow
      ... This is functionally identical to the already existing PHash_clean function, which wipes out all entries in the PHash. PHash_cleanSlots is only called by
      Message 2 of 2 , Dec 8, 2009
      View Source
      • 0 Attachment
        I've tracked this down to commit de831b on May 21st. PHash_cleanSlots was changed from an empty #define to a full-blown function:

        void PHash_cleanSlots(PHash *self)
        {
               memset(self->records, 0x0, self->size * sizeof(PHashRecord));
               self->keyCount = 0;
        }

        This is functionally identical to the already existing PHash_clean function, which wipes out all entries in the PHash. PHash_cleanSlots is only called by IoCollector_cleanAllObjects (which is only used by PDB sync), and by IoObject_markClean, so I'm not exactly clear what the intent of this really is.

        I assume that the term "clean" here is being overloaded as both the verb for "erase" and the adjective for "not dirty" and creating some confusion leading to the changes in this commit; certainly performing a PDB sync should not remove all slots in all objects.

        PHash has a seemingly complementary function PHash_hasDirtyKey #defined to 0, so I'm guessing PHash_cleanSlots should likewise still be an empty #define reserved for future use. If anyone has more info or disagrees with my interpretation, let me know. For now I will replace the empty definition of PHash_cleanSlots to resolve this issue in my repo.


        Steve, if this looks kosher, can I get a pull? git://github.com/anthem/io.git

        Thanks,
        James


        On Dec 4, 2009, at 11:43 PM, James Costlow wrote:

         

        It looks like "PDB sync" is failing due to some interaction with IoCoroutine.

        It's reproducible just by running the PDB unit tests:

        > > make testaddons
        > ...
        > Obsidian - testBasic
        > testSimpleSync
        > IoCoroutine error: unable to auto abort coro 0x1005ca050 by resuming parent coro Object_0x10022a7d0

        I'm not sure when this broke, but PDB and its unit tests did work fine as of a few months ago. I've entered a bug in the GitHub tracker. I'll look into it if I have the time, but with any luck maybe someone with more experience with the coroutine code can point out something obvious.

        - James


      Your message has been successfully submitted and would be delivered to recipients shortly.