Was bedeutet genau Chunk over-locked?

Willkommen!

Wenn du im Nexave-Forum mitmachen möchtest, schreib an community@nexave.de. Wir haben die Registrierungsfunktion in unserem Diskussionsforum nämlich deaktiviert, weil sich praktisch nur noch Spammer und Werbebots registriert haben. Per E-Mail sind wir dir gern behilflich, einen Account anzulegen.
  • Hallo


    ich bekomme den Fehler "Chunk over-locked" im Emulator (der echte Palm stürzt an der Stelle ab)


    Die Stelle ist folgende und der Error kommt beim Lock:

    Code
    MemHandle       recH;
    DBRecordTypeCntPtr	recP;
    ...
    if (recH = (MemHandle)DmQueryRecord(dbCnt, i))
    {
    recP = (DBRecordTypeCntPtr)MemHandleLock(recH);
    //Hier hole ich per recP->xxx Daten
    MemHandleUnlock(recH);
    }


    An mehreren anderen Stellen (auch mit anderen dbs) funktioniert das problemlos, aber bei einer Stelle bekomme ich den Fehler, genau nachdem ich den 14. Datensatz eingefügt habe. Den Fehler gibt es reproduzierbar nur an dieser Stelle - nach einem Reset kann ich 15 ff problemlos einfügen.


    Was bedeutet denn der Fehler genau und nach was muss ich da suchen? Ich habe schon überall geschaut, ob ich irgendwo einen Handle auf die Datenbank nicht wieder freigegeben habe, bisher leider erfolglos.


    Danke farion

  • okay, das erklärt die seltsame Zahl. Ich locke noch beim Schreiben des Datensatzes ein Handle:


    Aber das ist doch auch in Ordnung - oder unlock MemPtrUnlock recH2 nicht?
    Die MemHandleUnlocks habe ich überprüft, dort wird immer das vorher gelockte Handle angegeben.

    • Offizieller Beitrag

    Ich habe es so verstanden, das beide Code-Teile ineinander verschachtelt sind. Ich würde auf jedenfall MemHandlUnlock benutzen, wenn ich auch MemHandleLock nehme. Außerdem solltest Du einfach mal mitschreiben lassen, welcher Handle gelockt wird und welcher geunlockt. Vielleicht überschreibst Du in Deinem Code Deine Handle-Variable?

  • Ich habe den Fehler gefunden, nachdem ich überall mal debugging-meldungen reingemacht habe. Du hattest recht, es war sowas wie das return.


    Ich habe zu jedem Lock auch ein Unlock, das habe ich auch 20x überprüft. Allerdings gab es noch ne kleine Funktion, die ein Pulldown füllt und dort wird die Schleife mit break verlassen und der Unlock übergangen. Das hatte ich übersehen - naja nun ist es gefixt.


    Ich habe allerdings noch eine Frage. Kann ich ein bestimmtes Handle nur 15x locken oder insgesamt nur 15 Handles? Weil der Fehler trat ja bei einem ganz anderen Handle auf, anstatt bei dem welches wirklich nicht geunlockt wurde.


    Gruss far

    • Offizieller Beitrag
    Zitat

    Original von farion
    Ich habe allerdings noch eine Frage. Kann ich ein bestimmtes Handle nur 15x locken oder insgesamt nur 15 Handles? Weil der Fehler trat ja bei einem ganz anderen Handle auf, anstatt bei dem welches wirklich nicht geunlockt wurde.


    15x pro Handle. Ist ein 4 bit-Feld irgendwo in der Handle-Tabelle oder so.