[fpc-pascal] Stack problem in externally called callback function
    Wimpie Nortje 
    wimpienortje at gmail.com
       
    Fri Jul 31 19:05:19 CEST 2009
    
    
  
Hi everybody,
I am trying to use a shared lib written in C in my FPC program. The lib 
creates a number of threads and requires callbacks into the main app. It 
can call the callback from any of the threads.
When I compile without stack checking everything (seems) to work fine 
but when stack checking is on I get stack error (error 202) on entry to 
the callback function. I can break on the callback's 'begin' and see 
valid values for all the function parameters but when I step into the 
function body it crashes.
I say 'seems' when not using stack checking because when the app becomes 
large I get a lot of strange problems which would probably be explained 
by stack problems.
The .h file:
typedef int (*VortexOnAcceptedConnection)   (VortexConnection * 
connection, axlPointer data);
The pascal file:
type
      PVortexConnection = Pointer;
      TaxlPointer = Pointer;
      TVortexOnAcceptedConnection = function 
(connection:PVortexConnection;          data:TaxlPointer):longint;cdecl;
{This is the callback function called by the C library. It never gets 
called from the pascal code.}
function on_accepted(connection: PVortexConnection; data: TaxlPointer): 
longint;cdecl;
begin
  Result := 1;
end;
I have tried all the function modifiers, they all give the same problem.
I run fpc 2.2.4 on Kubuntu 9.04.
I ran the C version of this test application using valgrind and it 
doesn't give a single problem.
Any ideas or opinions will be appreciated.
Wimpie
    
    
More information about the fpc-pascal
mailing list