I am having some trouble with PerlObjCBridge on 10.6.
The following code executes fine on 10.5 but crashes perl on my 10.6 (32bit)
machine (both intel):
#!/usr/bin/perl
use Foundation;
@SBApplication::ISA = qw(PerlObjCBridge);
NSBundle->bundleWithPath_('/System/Library/Frameworks/ScriptingBridge.framework')->load;
my $terminal =
SBApplication->applicationWithBundleIdentifier_("com.apple.terminal");
my $tab = $terminal->doScript_in_("exec sleep 10", undef); # Spawn a
terminal
warn $tab->selected; # <-- Crash
Expected output is:
> 1 at ./bool.pl line 11.
But on 10.6 I get the following error and a crash-reporter dialog:
> **** ERROR **** PerlObjCBridge:: convertObjCToPerl(): Unrecognized or
> unsupported argument type B (66)
This appears to only be an issue for objects with accessing BOOL properties of
objects. (I'm using the generated header file for Terminal as a reference:
http://csshx.googlecode.com/svn/rewrite/Terminal.h)
Below is a highlight from the crash report for perl, and the "perl -V" and
"sw_vers" output from each machine.
Any ideas would be greatly appreciated.
Regards,
Gavin
10.6 Crash Report
> Thread 0 Crashed: Dispatch queue: com.apple.main-thread
> 0 libSystem.B.dylib 0x99590132 __kill + 10
> 1 libSystem.B.dylib 0x99590124 kill$UNIX2003 + 32
> 2 libSystem.B.dylib 0x996228e5 raise + 26
> 3 libSystem.B.dylib 0x9963899c abort + 93
> 4 PerlObjCBridge.bundle 0x00164323 convertObjCToPerl + 2041
> 5 PerlObjCBridge.bundle 0x001647b3 convertResult + 1157
> 6 PerlObjCBridge.bundle 0x001687a9
> XS_PerlObjCBridge_sendObjcMessage + 3685
> 7 libperl.dylib 0x0007f4b0 Perl_pp_entersub + 2384
> 8 libperl.dylib 0x00077faa Perl_runops_standard + 41
> 9 libperl.dylib 0x00077d79 perl_run + 427
> 10 perl5.10.0 0x00001e17 main + 273
> 11 perl5.10.0 0x00001cfd start + 53
10.6 sw_vers
> ProductName: Mac OS X
> ProductVersion: 10.6.3
> BuildVersion: 10D573
10.6 perl -V
> Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
> Platform:
> osname=darwin, osvers=10.0, archname=darwin-thread-multi-2level
> uname='darwin neige.apple.com 10.0 darwin kernel version 10.0.0d8: tue
> may 5 19:29:59 pdt 2009; root:xnu-1437.2~2release_i386 i386 '
> config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags=
> -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=gcc-4.2'
> hint=recommended, useposix=true, d_sigaction=define
> useithreads=define, usemultiplicity=define
> useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
> use64bitint=define, use64bitall=define, uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='gcc-4.2', ccflags ='-arch x86_64 -arch i386 -arch ppc -g -pipe
> -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include',
> optimize='-Os',
> cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing
> -I/usr/local/include'
> ccversion='', gccversion='4.2.1 (Apple Inc. build 5646)', gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
> alignbytes=8, prototype=define
> Linker and Libraries:
> ld='gcc-4.2 -mmacosx-version-min=10.6', ldflags ='-arch x86_64 -arch i386
> -arch ppc -L/usr/local/lib'
> libpth=/usr/local/lib /usr/lib
> libs=-ldbm -ldl -lm -lutil -lc
> perllibs=-ldl -lm -lutil -lc
> libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
> gnulibc_version=''
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
> cccdlflags=' ', lddlflags='-arch x86_64 -arch i386 -arch ppc -bundle
> -undefined dynamic_lookup -L/usr/local/lib'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
> PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS
> USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
> Locally applied patches:
> /Library/Perl/Updates/<version> comes before system perl directories
> installprivlib and installarchlib points to the Updates directory
> Built under darwin
> Compiled at Jun 24 2009 00:35:28
> %ENV:
> PERL5LIB="/sw/lib/perl5:/sw/lib/perl5/darwin"
> @INC:
> /sw/lib/perl5/5.10.0/darwin-thread-multi-2level
> /sw/lib/perl5/5.10.0
> /sw/lib/perl5/darwin-thread-multi-2level
> /sw/lib/perl5
> /sw/lib/perl5/darwin
> /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level
> /Library/Perl/Updates/5.10.0
> /System/Library/Perl/5.10.0/darwin-thread-multi-2level
> /System/Library/Perl/5.10.0
> /Library/Perl/5.10.0/darwin-thread-multi-2level
> /Library/Perl/5.10.0
> /Network/Library/Perl/5.10.0/darwin-thread-multi-2level
> /Network/Library/Perl/5.10.0
> /Network/Library/Perl
> /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level
> /System/Library/Perl/Extras/5.10.0
> .
10.5 sw_vers
> ProductName: Mac OS X
> ProductVersion: 10.5.8
> BuildVersion: 9L30
10.5 perl -V
> Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
> Platform:
> osname=darwin, osvers=9.0, archname=darwin-thread-multi-2level
> uname='darwin b04.apple.com 9.0 darwin kernel version 9.6.0: mon nov 24
> 17:37:00 pst 2008; root:xnu-1228.9.59~1release_i386 i386 '
> config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags=
> -Dman3ext=3pm -Duseithreads -Duseshrplib'
> hint=recommended, useposix=true, d_sigaction=define
> usethreads=define use5005threads=undef useithreads=define
> usemultiplicity=define
> useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=define use64bitall=define uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc', ccflags ='-arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN
> -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement
> -I/usr/local/include',
> optimize='-O3',
> cppflags='-no-cpp-precomp -arch ppc -g -pipe -fno-common -DPERL_DARWIN
> -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement
> -I/usr/local/include'
> ccversion='', gccversion='4.0.1 (Apple Inc. build 5465)', gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
> alignbytes=8, prototype=define
> Linker and Libraries:
> ld='cc -mmacosx-version-min=10.5.6', ldflags ='-arch ppc -arch i386
> -L/usr/local/lib'
> libpth=/usr/local/lib /usr/lib
> libs=-ldbm -ldl -lm -lutil -lc
> perllibs=-ldl -lm -lutil -lc
> libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
> gnulibc_version=''
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
> cccdlflags=' ', lddlflags='-arch ppc -arch i386 -bundle -undefined
> dynamic_lookup -L/usr/local/lib'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
> PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
> USE_PERLIO USE_REENTRANT_API
> Locally applied patches:
> fix for regcomp CVE-2007-5116 security vulnerability
> fix for double-free CVE-2008-1927 security vulnerability
> /Library/Perl/Updates/<version> comes before system perl directories
> installprivlib and installarchlib points to the Updates directory
> Built under darwin
> Compiled at Jan 27 2010 23:39:09
> @INC:
> /Library/Perl/Updates/5.8.8
> /System/Library/Perl/5.8.8/darwin-thread-multi-2level
> /System/Library/Perl/5.8.8
> /Library/Perl/5.8.8/darwin-thread-multi-2level
> /Library/Perl/5.8.8
> /Library/Perl
> /Network/Library/Perl/5.8.8/darwin-thread-multi-2level
> /Network/Library/Perl/5.8.8
> /Network/Library/Perl
> /System/Library/Perl/Extras/5.8.8/darwin-thread-multi-2level
> /System/Library/Perl/Extras/5.8.8
> /Library/Perl/5.8.6/darwin-thread-multi-2level
> /Library/Perl/5.8.6
> /Library/Perl/5.8.1/darwin-thread-multi-2level
> /Library/Perl/5.8.1
> .