develooper Front page | perl.perl5.porters | Postings from January 2004

[perl #24886] fork & Tk do not live together.

Thread Next
From:
Nikolay Kuznetsov
Date:
January 12, 2004 20:11
Subject:
[perl #24886] fork & Tk do not live together.
Message ID:
rt-3.0.8-24886-69947.1.53931530954729@perl.org
# New Ticket Created by  "Nikolay Kuznetsov" 
# Please include the string:  [perl #24886]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=24886 >


This is a bug report for perl from obogrew@hotmail.com,
generated with the help of perlbug 1.34 running under perl v5.8.2.


-----------------------------------------------------------------
fork & Tk do not live together.
Please examine following code:



use Tk;
my($top);
$top = MainWindow->new();
if(fork())
{

 Tk::MainLoop;

}
else
{
 # child does nothing

}
crashes under windows 2000
works only if $top = MainWindow->new();  will be constructed after fork.
It means, it is impossible to fork when any reference to tk object is alive.
Eg. from Tk callbacks;

Please examine following code:

use Tk;

if(fork())
{

 my($top);
 $top = MainWindow->new();
 $top->title("Parent window");
 my($root) = $top->Frame()->pack(
  -fill=>'both',
  -expand=>1
 );

 my($button1) = $root->Button (
  -text => 'Button 1 '
 );
 $button1->grid(
  -in => $root,
  -column => '1',
  -row => '2'
 );
 $top->MainLoop;

}
else
{
 my($top);
 $top = MainWindow->new();
 $top->title("child window");
 my($root) = $top->Frame()->pack(
  -fill=>'both',
  -expand=>1
 );

 my($button1) = $root->Button (
  -text => 'Button 1 '
 );
 $button1->grid(
  -in => $root,
  -column => '1',
  -row => '2'
 );
 $top->MainLoop;

}

Crashes when mouse points to button ow parent window.
It means, it is impossible to manage two independent toplevel widgets in two
independent processes.

Tk version 8.24

The same under Perl 5.6.1


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=library
    severity=medium
---
Site configuration information for perl v5.8.2:

Configured by ActiveState at Tue Dec  9 10:19:27 2003.

Summary of my perl5 (revision 5 version 8 subversion 2) configuration:
  Platform:
    osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
    uname=''
    config_args='undef'
    hint=recommended, useposix=true, d_sigaction=undef
    usethreads=undef use5005threads=undef useithreads=define
usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cl', ccflags
='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE
_DES_FCRYPT  -DNO_HASH_SEED -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUS
E_PERLIO -DPERL_MSVCRT_READFIX',
    optimize='-MD -Zi -DNDEBUG -O1',
    cppflags='-DWIN32'
    ccversion='', gccversion='', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='link', ldflags
'-nologo -nodefaultlib -debug -opt:ref,icf  -libpath:"C:\Perl8\lib\CORE"  -m
achine:x86'
    libpth=C:\PROGRA~1\MICROS~3\VC98\lib
    libs=  oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib
uuid.lib wsock32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib
msvcrt.lib
    perllibs=  oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib  netapi32.lib
uuid.lib wsock32.lib mpr.lib winmm.lib  version.lib odbc32.lib odbccp32.lib
msvcrt.lib
    libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib
    gnulibc_version='undef'
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ',
lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf  -libpath:"C:\Perl
8\lib\CORE"  -machine:x86'

Locally applied patches:
    ACTIVEPERL_LOCAL_PATCHES_ENTRY
    21846 Configure gets d_u32align wrong
    21739 [perl #24493] install.html not working
    21737 Ooops. left an XXX comment in, and worse still it's a // comment
    21735 utf8 keys now work for tied hashes
    21734 Accessing unicode keys in tie hashes via hv_exists was broken
    21733 ext/threads/t/problem.t
    21732 Config::myconfig() fails under ithreads
    21728 Update perlhist with 5.6.2
    21723 Include 'SCCS' in the list of dir names ignored by installperl
    21718 Empty subroutine as object method segfaults in 5.8.2 (sometimes)
    21714 Fix bug #24380: assigning list with duplicated keys to a hash
    21706 [perl #24460] [DOC PATCH] the begincheck program
    21693 must copy changes from win32/makeifle.mk to wince/makefile.ce
    21691 Update the list of pumpkings in perlhist.pod
    21687 [PATCH 5.6.2-RC1 pod/perlhist.pod]  Updated
    21677 OS/2 docu
    21676 Bug #24407: key for shared hash got stringified into wrong pool
    21673 Be sure to use -fPIC not -fpic on Linux/SPARC
    21672 extending the hash attack test
    21671 Benchmark.pm cmpthese segfault
    21662 'make minitest' fails for op/cproto and op/pat
    21586 Comment that this 'optimisation' is actually a necessary fixup
    21548 Sync with Pod::Perldoc 3.12
    21540 Fix backward-compatibility issues in if.pm

---
@INC for perl v5.8.2:
    C:/Perl8/lib
    C:/Perl8/site/lib
    .

---
Environment for perl v5.8.2:
    HOME (unset)
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=C:\Perl\bin\;C:\CentRun;C:\WINNT\system32;C:\WINNT;C:\Program
Files\TEPlugin;C:\Cmvc32\exe;C:\Rational\ClearCase\bin;C:\Program
Files\Rational\common;C:\Program
Files\Rational\ClearQuest;C:\Cmvc32\exe;C:\Perl\utils;C:\Tcl\bin;S:\Oracle\8
1700\bin;%Centura_Path%;%GEN_PATH%;%JDK_PATH%;%MPDE%;C:\Perl\bin\;C:\CentRun
;C:\WINNT\system32;C:\WINNT;C:\Program
Files\TEPlugin;C:\Cmvc32\exe;C:\Rational\ClearCase\bin;C:\Program
Files\Rational\common;C:\Program
Files\Rational\ClearQuest;C:\Cmvc32\exe;C:\Perl\utils
    PERL_BADLANG (unset)
    SHELL (unset)

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About