Difference between revisions of "Talk:Multithreaded Application Tutorial"

From Free Pascal wiki
Jump to navigationJump to search
(New page: procedure TMyThread.Execute; var newStatus : string; begin fStatusText := 'TMyThread Starting...'; Synchronize(@Showstatus); fStatusText := 'TMyThread Running...'; thi...)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
procedure TMyThread.Execute;
+
== fpc_popaddrstack() ==
  var
 
    newStatus : string;
 
  begin
 
    fStatusText := 'TMyThread Starting...';
 
    Synchronize(@Showstatus);
 
    fStatusText := 'TMyThread Running...';
 
  
this is a
+
I want to use FPC to compile my WinApi multi-threaded application but after compilation and running I often receive SIGSEGV error. After debugging, the segmentation fault is ALWAYS in function "fpc_popaddrstack()".  
very good example of what you should NEVER do..
 
  
Showstatus will NEVER display the text 'TMyThread Starting...';
+
The application uses hooks and CreateRemoteThread. Thus additional calls to "fpc_popaddrstack()" must not be made. The trick described in that article will not work properly. These calls shall be disabled.
  
will show "TMyThread Running..."
+
I do not use "try-except" and "try-finally" blocks in my code and I don't need exception handling.
maybe twice ...
+
My question is: '''How to supress the fpc_popaddrstack() or (better) all routines in unit "except.inc"?''' (any directive to disable it)
  
change your main-thread code to:
+
I will be very grateful for a solution to my problem.
 +
[[User:Xena|Xena]] 00:37, 16 February 2014 (CET)
  
  procedure TForm1.ShowStatus(Status: string);
+
== fpgui ==
  begin
 
    memo1.Lines.Add(Status);
 
  end;
 
  
 
+
I rewrote the example as an fpgui program (just for my own education).
and you will see what i mean..
+
I don't know whether this is useful to anyone else.
 +
Anyway, find the example here
 +
http://forum.lazarus.freepascal.org/index.php/topic,24217.0.html : [[User:Dieselnutjob|dieselnutjob]]

Revision as of 00:00, 13 April 2014

fpc_popaddrstack()

I want to use FPC to compile my WinApi multi-threaded application but after compilation and running I often receive SIGSEGV error. After debugging, the segmentation fault is ALWAYS in function "fpc_popaddrstack()".

The application uses hooks and CreateRemoteThread. Thus additional calls to "fpc_popaddrstack()" must not be made. The trick described in that article will not work properly. These calls shall be disabled.

I do not use "try-except" and "try-finally" blocks in my code and I don't need exception handling. My question is: How to supress the fpc_popaddrstack() or (better) all routines in unit "except.inc"? (any directive to disable it)

I will be very grateful for a solution to my problem. Xena 00:37, 16 February 2014 (CET)

fpgui

I rewrote the example as an fpgui program (just for my own education). I don't know whether this is useful to anyone else. Anyway, find the example here http://forum.lazarus.freepascal.org/index.php/topic,24217.0.html : dieselnutjob