Test suite results for test file webtbs/tw3467.pp

Test run data :

Free Pascal Compiler Test Suite Results

View Test suite results

Please specify search criteria:
File:
Operating system:
Processor:
Version
Date
Submitter
Machine
Comment
Limit
Cond
Category
Only failed tests
Hide skipped tests
List all tests

Test file "webtbs/tw3467.pp" information:

t_id 1420
t_adddate 2004/12/27
t_result 0
t_knownrunerror 0

Detailed test run results:

Record count: 50

Total = 50

OK=50 Percentage= 100.00

Result type Cat. Count Percentage First date Last Date
Successfully run 50 100.0 2024/05/16 21:24:00 47 2024/05/16 23:57:00 23
i386 16 32.0 2024/05/16 22:08:00 35 2024/05/16 23:57:00 23
sparc 16 32.0 2024/05/16 23:24:00 38 2024/05/16 23:55:00 41
powerpc 6 12.0 2024/05/16 21:24:00 47 2024/05/16 22:06:00 76
x86_64 12 24.0 2024/05/16 22:22:00 29 2024/05/16 22:53:00 29
linux 8 16.0 2024/05/16 21:24:00 47 2024/05/16 23:46:00 27
win32 4 8.0 2024/05/16 22:08:00 35 2024/05/16 23:57:00 23
solaris 38 76.0 2024/05/16 22:22:00 29 2024/05/16 23:55:00 41
3.3.1 24 48.0 2024/05/16 22:08:00 35 2024/05/16 23:57:00 23
3.2.3 26 52.0 2024/05/16 21:24:00 47 2024/05/16 23:55:00 41

Source:

{ Source provided for Free Pascal Bug Report 3467 }
{ Submitted by "Micha Nelissen" on  2004-12-24 }
{ e-mail: micha@neli.hopto.org }
program threadvartest;

{$mode objfpc}
{$H+}

uses
  erroru,
  sysutils,
  classes
{$ifdef unix}
  , cthreads
{$endif}
  ;

type
  tthread1 = class(tthread)
  public
    p : pointer;
    procedure execute; override;
  end;

  tthread2 = class(tthread)
  public
    p : pointer;
    procedure execute; override;
  end;

threadvar
  athreadvar: integer;

procedure tthread1.execute;
var
  i: integer;
begin
  writeln('thread 1 var is @', ptrint(@athreadvar));
    athreadvar := 1;
    p:=@athreadvar;
   Sleep(2000);
    for i := 0 to 100000 do
      if athreadvar <> 1 then
      begin
        writeln(athreadvar);
        error;
        break;
      end;
end;

procedure tthread2.execute;
var
  i: integer;
begin
  writeln('thread 2 var is @', ptrint(@athreadvar));
    athreadvar := 9;
    p:=@athreadvar;
   Sleep(2000);
    for i := 0 to 100000 do
      if athreadvar <> 9 then
      begin
        writeln('  ', athreadvar);
        error;
        break;
      end;
end;

var
  thread1: tthread1;
  thread2: tthread2;
begin
  thread1 := tthread1.create(false);
  thread2 := tthread2.create(false);
  thread1.waitfor;
  thread2.waitfor;
  if thread1.p=thread2.p then
    error;
end.

Link to SVN view of webtbs/tw3467.pp source.