` Comment on an Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Add a comment to an Icetips Article

Please add your comments to this article. Please note that you must provide both a name and a valid email address in order for us to publish your comment. Comments are moderated and are not visible until they have been approved. Spam is never approved!

Your Name:  
Email:  
Header text/Subject:  

Please enter your comment in the box below:

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

Clarion 6: Frequent GPFs in IniMgr.Kill in Clarion 6 Gold
2004-02-16 -- Kevin Erskine
 
I frequently get GPF in the INIMgr.Kill method -- I think the coding is wrong -- Not checking for NULLs

Current code in ABUTIL.CLW:

INIClass.Kill PROCEDURE

critProc  CriticalProcedure

  CODE
  critProc.init(SELF.critSect)
  SELF.UpdateQueue('__Dont_Touch_Me__','Sectors',|
                   SELF.Sectors,SELF.Sectors.Family,|
                   SELF.Sectors.Item,SELF.Sectors.Type) !***
  IF  NOT SELF.Sectors &= NULL
    DISPOSE(SELF.Sectors)
    SELF.Sectors &= NULL
  END
Should have the Self.UpdateQueue inside the check for NULL in the next line - so I think it should read:
INIClass.Kill PROCEDURE

critProc  CriticalProcedure

  CODE
  critProc.init(SELF.critSect)
  IF  NOT SELF.Sectors &= NULL
    SELF.UpdateQueue('__Dont_Touch_Me__','Sectors',|
                     SELF.Sectors,SELF.Sectors.Family,|
                     SELF.Sectors.Item,SELF.Sectors.Type) !***
    DISPOSE(SELF.Sectors)
    SELF.Sectors &= NULL
  END

OK - I have found, I identified and corrected my GPFs in C6 -- Here is my solution...

This has solved a GPF problem that has been plaguing me for the past month -- ARGhhhhhhh

My Applications repeatedly failed until I made these changes. I hope it helps others with theirs.

The problem is is a sporadic problem of .constructs and .destructs being called for a thread after it is terminated and certain classes are not checking themselves for valid pointers.

I am not the only one who has spent hours trying to track down these weird C6 New threading model problems.

2 changes made
1) See previous msg in the IniMgr.Kill method the Self.Sectors check
2) In the IniClass.Destruct the check for the critical section

Currently Reads...

INIClass.Destruct procedure
  CODE
  SELF.critSect.kill()
Should Be changed to
INIClass.Destruct procedure
  CODE
  IF NOT SELF.critSect &= NULL
    SELF.critSect.kill()
    SELF.critSect &= NULL
  END


Today is April 28, 2024, 2:25 am
This article has been viewed 35122 times.
Google search has resulted in 112 hits on this article since January 25, 2004.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: