Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-09-25 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

En/na Luca Olivetti ha escrit:

This is another test program that shows my problem with fork: as soon 
as I start the thread, the main program stops working (the thread *is* 
running, you can put a writeln in its loop to show it). Note that in 
this short example I don't close stdin,stdout,stderr, I don't block 
signals but it doesn't matter (I did it all and the result is the same).

The same happens with the native compiler and the cross compiler.

Now, if I remove the fork part, both the thread and the main loop 
work, but if I use crtl-z and then fg after the thread has started it 
will give an EAccessViolation, but this only with the native compiler 
(remind that the native compiler is 2.1.3 while the cross compiler is 
2.0.4).


Now tested with a self-built 2.1.4 and it does the same.
Unfortunately I still cannot test with a newer kernel.

[test program removed, original post available at: 
http://lists.freepascal.org/lists/fpc-pascal/2007-April/013558.html]


Just tried again with the 2.2.0 compiler available at
ftp://ftp.freepascal.org/pub/fpc/dist/arm-linux-2.2.0/

Without the fork everything seems to work ok, ctrl-z and then fg (or bg) 
doesn't cause the EAccessViolation anymore.

With the fork the main loop stops as soon as the thread starts.

Bye
--
Luca

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-05-24 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

This is another test program that shows my problem with fork: as soon as 
I start the thread, the main program stops working (the thread *is* 
running, you can put a writeln in its loop to show it). Note that in 
this short example I don't close stdin,stdout,stderr, I don't block 
signals but it doesn't matter (I did it all and the result is the same).

The same happens with the native compiler and the cross compiler.

Now, if I remove the fork part, both the thread and the main loop work, 
but if I use crtl-z and then fg after the thread has started it will 
give an EAccessViolation, but this only with the native compiler (remind 
that the native compiler is 2.1.3 while the cross compiler is 2.0.4).


Now tested with a self-built 2.1.4 and it does the same.
Unfortunately I still cannot test with a newer kernel.

[test program removed, original post available at: 
http://lists.freepascal.org/lists/fpc-pascal/2007-April/013558.html]


Bye
--
Luca

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-05 Thread Micha Nelissen
Luca Olivetti wrote:
> This is another test program that shows my problem with fork: as soon as
> I start the thread, the main program stops working (the thread *is*
> running, you can put a writeln in its loop to show it). Note that in
> this short example I don't close stdin,stdout,stderr, I don't block
> signals but it doesn't matter (I did it all and the result is the same).
> The same happens with the native compiler and the cross compiler.

I can reproduce this,

(gdb) bt
#0  0x401afd80 in __pthread_sigsuspend () from /lib/libpthread.so.0
#1  0x401aea7c in __pthread_wait_for_restart_signal () from
/lib/libpthread.so.0
#2  0x401afc40 in pthread_create@@GLIBC_2.1 () from /lib/libpthread.so.0

Seems like it's waiting for some signal to be passed to the process, but
it doesn't happen.

Micha
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-04 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

OTOH my real program, even if cross-compiled (what a pain!), is still 
throwing an exception if I use ctrl-z, is still having problems with 
fork but at least (if I leave it in the foreground) I can use ctrl+c.


This is another test program that shows my problem with fork: as soon as 
I start the thread, the main program stops working (the thread *is* 
running, you can put a writeln in its loop to show it). Note that in 
this short example I don't close stdin,stdout,stderr, I don't block 
signals but it doesn't matter (I did it all and the result is the same).

The same happens with the native compiler and the cross compiler.

Now, if I remove the fork part, both the thread and the main loop work, 
but if I use crtl-z and then fg after the thread has started it will 
give an EAccessViolation, but this only with the native compiler (remind 
that the native compiler is 2.1.3 while the cross compiler is 2.0.4).


-8<8<---8<8<--
program test2; 


{$mode objfpc}{$H+}

uses cthreads,sysutils,classes,baseunix;

type
  tmt=class(TThread)
procedure execute;override;
  end;

var
  mt:tmt;
  t:TPid;
  i:integer;

procedure tmt.execute;
begin
  while not terminated do sleep(1000);
end;

begin
  t:=FpFork;
  if t<0 then
  begin
writeln('fork failed');
halt(t);
  end;
  if t>0 then Halt(0); //parent
  while true do
  begin
i:=i+1;
writeln('running ',i);
sleep(1000);
if i=5 then mt:=tmt.create(false);
  end;
end.
-8<8<---8<8<--

Bye
--
Luca
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-04 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

En/na Luca Olivetti ha escrit:

En/na Luca Olivetti ha escrit:

the example daemon.pp, for example, crashes right away, strace 
doesn't seem very useful to me:


but it works fine cross-compiling (with fpc 2.0.4).
I cannot find a way to cross-compile my test program:

[EMAIL PROTECTED] fork]$ ppcarm 
-Fu/home/luca/fpc-arm-2.0.4/lib/fpc/2.0.4/units/arm-linux/* 
-XParm-linux-  -Xd  -Xr/home/luca/lsproroot/usr/lib/ test.pas


After reading the fine documentation I think I found the correct 
incantation of the command (/home/luca/lsproroot has the lspro nfs 
mounted, so the libs are there) but still it doesn't work:

[...]

: undefined reference to `__dlsym'
test.pas(12,3) Error: Error while linking


Ok, google told me that it was a probably a symbolic link, fixed it to 
be relative and I managed to cross-compile the test program

No crash.
OTOH my real program, even if cross-compiled (what a pain!), is still 
throwing an exception if I use ctrl-z, is still having problems with 
fork but at least (if I leave it in the foreground) I can use ctrl+c.


Bye
--
Luca

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-04 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

En/na Luca Olivetti ha escrit:

the example daemon.pp, for example, crashes right away, strace doesn't 
seem very useful to me:


but it works fine cross-compiling (with fpc 2.0.4).
I cannot find a way to cross-compile my test program:

[EMAIL PROTECTED] fork]$ ppcarm 
-Fu/home/luca/fpc-arm-2.0.4/lib/fpc/2.0.4/units/arm-linux/* 
-XParm-linux-  -Xd  -Xr/home/luca/lsproroot/usr/lib/ test.pas


After reading the fine documentation I think I found the correct 
incantation of the command (/home/luca/lsproroot has the lspro nfs 
mounted, so the libs are there) but still it doesn't work:



[EMAIL PROTECTED] fork]$ ppcarm 
-Fu/home/luca/fpc-arm-2.0.4/lib/fpc/2.0.4/units/arm-linux/* 
-Fl/home/luca/lsproroot/lib -Fl/home/luca/lsproroot/usr/lib 
-XParm-linux- -Xd  -Xr/lib:/usr/lib test.pas

Free Pascal Compiler version 2.0.4 [2006/08/23] for arm
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Linux for ARM
Compiling test.pas
Assembling test
Linking test
/home/luca/fpc-arm-2.0.4/bin/arm-linux-ld: skipping incompatible 
/home/luca/lsproroot/usr/lib//libdl.so when searching for -ldl
/home/luca/fpc-arm-2.0.4/lib/fpc/2.0.4/units/arm-linux/rtl/cthreads.o(.text+0x18): 
In function `CTHREADS_LOADPTHREADS$$BOOLEAN':
: warning: Using 'dlopen' in statically linked applications requires at 
runtime the shared libraries from the glibc version used for linking
/home/luca/lsproroot/usr/lib//libdl.a(dlopen.o)(.text+0x1c): In function 
`dlopen':

: undefined reference to `__dlopen'
/home/luca/lsproroot/usr/lib//libdl.a(dlclose.o)(.text+0x0): In function 
`dlclose':

: undefined reference to `__dlclose'
/home/luca/lsproroot/usr/lib//libdl.a(dlsym.o)(.text+0x1c): In function 
`dlsym':

: undefined reference to `__dlsym'
test.pas(12,3) Error: Error while linking

Bye
--
Luca
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Luca Olivetti

En/na Luca Olivetti ha escrit:

the example daemon.pp, for example, crashes right away, strace doesn't 
seem very useful to me:


but it works fine cross-compiling (with fpc 2.0.4).
I cannot find a way to cross-compile my test program:

[EMAIL PROTECTED] fork]$ ppcarm 
-Fu/home/luca/fpc-arm-2.0.4/lib/fpc/2.0.4/units/arm-linux/* 
-XParm-linux-  -Xd  -Xr/home/luca/lsproroot/usr/lib/ test.pas

Free Pascal Compiler version 2.0.4 [2006/08/23] for arm
Copyright (c) 1993-2006 by Florian Klaempfl
Target OS: Linux for ARM
Compiling test.pas
Assembling test
Linking test
/home/luca/fpc-arm-2.0.4/bin/arm-linux-ld: cannot find -ldl
test.pas(12,3) Error: Error while linking

Bye
--
Luca



___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Micha Nelissen
Luca Olivetti wrote:
>> Backgrounding is not the same as forking. 
> 
> I (vaguely) understand the difference, but I think (probably mistakenly)
> that the problems are related.

I'm not saying the problems are not related; they may be. It's just
important to know there is a difference.

> the example daemon.pp, for example, crashes right away, strace doesn't
> seem very useful to me:
> 
> [EMAIL PROTECTED]:~/fork$ strace -f ./daemon
> execve("./daemon", ["./daemon"], [/* 22 vars */]) = 0
> syscall: unknown syscall trap 0x8000

There is a patch on the internet for strace, to skip this error. Google
for strace syscall trap.

> A simple program that just repeatedly sleeps after the fork, dies as
> soon as it receives any signal (e.h HUP, USR1).

Ok, this will be the same problem as with backgrounding in the shell.

Micha
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Luca Olivetti

En/na Micha Nelissen ha escrit:

Luca Olivetti wrote:

[EMAIL PROTECTED]:~$ uname -a
Linux lspro 2.6.12.6-arm1 #77 Tue Dec 5 22:23:46 CST 2006 armv5tejl
GNU/Linux


I've gotten access to an arm-linux system, where I cannot reproduce the
crash. That system is using 2.6.18 kernel. Can you try a newer kernel as
well ?


Unfortunately no. The fine guys at linkstationwiki.net are working hard 
trying to make a newer kernel work on this machine, but it will take a 
while. I'll have to wait :-(


Bye
--
Luca
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Luca Olivetti

En/na Micha Nelissen ha escrit:

Luca Olivetti wrote:

synchronize and critical sections, c library with callbacks to pascal,
etc.) is working flawlessly in the foreground, but it segfaults if I try
to background it (or try to use fpFork), and this is a problem since I
want to write a daemon (i can use screen though if that isn't possible).


Backgrounding is not the same as forking. 


I (vaguely) understand the difference, but I think (probably mistakenly) 
that the problems are related.



Backgrounding is using the
shell's job control (and sends some signal(s) to the process), forking
is what the program does itself. Can you list an example that crashes
with fpfork, and give an strace with it ?


the example daemon.pp, for example, crashes right away, strace doesn't 
seem very useful to me:


[EMAIL PROTECTED]:~/fork$ strace -f ./daemon
execve("./daemon", ["./daemon"], [/* 22 vars */]) = 0
syscall: unknown syscall trap 0x8000


A simple program that just repeatedly sleeps after the fork, dies as 
soon as it receives any signal (e.h HUP, USR1).


Bye
--
Luca
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Micha Nelissen
Luca Olivetti wrote:
> [EMAIL PROTECTED]:~$ uname -a
> Linux lspro 2.6.12.6-arm1 #77 Tue Dec 5 22:23:46 CST 2006 armv5tejl
> GNU/Linux

I've gotten access to an arm-linux system, where I cannot reproduce the
crash. That system is using 2.6.18 kernel. Can you try a newer kernel as
well ?

Micha
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Micha Nelissen
Luca Olivetti wrote:
> synchronize and critical sections, c library with callbacks to pascal,
> etc.) is working flawlessly in the foreground, but it segfaults if I try
> to background it (or try to use fpFork), and this is a problem since I
> want to write a daemon (i can use screen though if that isn't possible).

Backgrounding is not the same as forking. Backgrounding is using the
shell's job control (and sends some signal(s) to the process), forking
is what the program does itself. Can you list an example that crashes
with fpfork, and give an strace with it ?

Micha
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal


[fpc-pascal] problem with threads and backgrounding, fpc 2.1.3 arm native

2007-04-03 Thread Luca Olivetti

[I'm not sure if this should go here or fpc-devel]

Hello,
I'm quite impressed by the native arm compiler that I grabbed here
ftp://ftp.freepascal.org/pub/fpc/beta/2.1.2/arm-linux/.
My small but relatively complex program (with various threads using 
synchronize and critical sections, c library with callbacks to pascal, 
etc.) is working flawlessly in the foreground, but it segfaults if I try 
to background it (or try to use fpFork), and this is a problem since I 
want to write a daemon (i can use screen though if that isn't possible).


This small program exhibits the same problem:

---8<---8<---8<---8<--
program test;
{$mode objfpc}{$H+}

uses cthreads,sysutils,classes;

type
  tmt=class(TThread)
procedure execute;override;
  end;

var
  mt:tmt;

procedure tmt.execute;
begin
  while not terminated do sleep(100);
end;

begin
  mt:=tmt.create(false);
  sleep(5000);
  write('press enter to finish');
  readln;
  mt.free;
end.
---8<---8<---8<---8<--

If you try to bacground it with ctrl+z during the sleep(5000) it will 
segfaults:


[EMAIL PROTECTED]:~/fork$ ./test

[1]+  Stopped ./test
[EMAIL PROTECTED]:~/fork$ fg
./test
An unhandled exception occurred at $BEE2C9C8 :
EAccessViolation : Access violation
  $BEE2C9C8
  $000103B0


If you remove the thread or try to background it after the sleep there's 
no problem. Also the same program under i386 (but compiled with fpc 
2.0.4) has no such problem.

I'm running it on a linkstation pro with freelink (debian etch):

[EMAIL PROTECTED]:~$ cat /proc/cpuinfo
Processor   : ARM926EJ-Sid(wb) rev 0 (v5l)
BogoMIPS: 266.24
Features: swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part: 0x926
CPU revision: 0
Cache type  : write-back
Cache clean : cp15 c7 ops
Cache lockdown  : format C
Cache format: Harvard
I size  : 32768
I assoc : 1
I line length   : 32
I sets  : 1024
D size  : 32768
D assoc : 1
D line length   : 32
D sets  : 1024

Hardware: MV-88fxx81
Revision: 
Serial  : 

[EMAIL PROTECTED]:~$ uname -a
Linux lspro 2.6.12.6-arm1 #77 Tue Dec 5 22:23:46 CST 2006 armv5tejl 
GNU/Linux



Bye
--
Luca

A: Because it destroys the flow of the conversation
Q: Why is it bad?
A: No, it's bad.
Q: Should I top post in replies to mailing lists?
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal