Re: [perl #39378] Pheme Segfault with Keyed Class Names

2006-06-12 Thread Leopold Toetsch
Am Freitag, 9. Juni 2006 21:19 schrieb chromatic:
> Oddly, I see these only when running through the Pheme interpreter, not
> when dumping out the raw PIR code and executing that.

(gdb) r -G pheme.pbc t/cdr.t 
1..2
ok 1 - tail of three elem list should be two elem list
ok 2 - tail of two elem list should be one elem list

When GC is enabled, I see the same error as shown in the backtrace. Looks like 
a GC bug to me. For some strange reason, the key in the multi signature has 
the key_number bit set, which is leading to the segfault. 

For now I'd suggest to disable DOD/GC for runtime by emitting sweepoff & 
collectoff opcodes.

leo


Parrot Bug Summary

2006-06-12 Thread Parrot Bug Summary
Parrot Bug Summary

http://rt.perl.org/rt3/NoAuth/parrot/Overview.html
Generated at Mon Jun 12 13:15:01 2006 GMT
---

  * Numbers
  * New Issues
  * Overview of Open Issues
  * Ticket Status By Version
  * Requestors with most open tickets

---

Numbers

Ticket Counts: 80 new + 200 open = 280
Created this week: 5
Closed this week: 7

---

New Issues

New issues that have not been responded to yet

1 - 2 weeks old
39272  failures in languages/tcl/t/cmd_lsort.t
39248  Parrot release 0.4.6
2 - 3 weeks old
39197  lib/Parrot/Test.pm ignores core dumps failures!
39196  [TODO] tests - need to test addmethod
3 - 4 weeks old
39140  Parrot release 0.4.5
4 - 5 weeks old
39132  [TODO] pirtidy - call for help
5 - 6 weeks old
39092  [TODO] Autogenerate functions in *.h files from source
39088  [TODO] Add conditional GCC attributes to functions
39051  Test failure in t/pmc/objects_62.pasm (attributes)
39050  Build failure in compilers/pge/pgc.pir
39043  [TODO] Dynamic PMCs should not include 'parrot/parrot.h'
6 - 7 weeks old
39018  t/pmc/complex failures on Solaris 8/SPARC
39004  [PDD] review pdd25_threads.pod
39003  [PDD] review pdd24_events.pod
39001  [PDD] review pdd22_io.pod
39000  [PDD] review pdd19_pir.pod
38999  [PDD] review pdd18_security.pod
38998  [PDD] review pdd17_basic_types.pod
38997  [PDD] review pdd16_native_call.pod
38996  [PDD] review pdd15_objects.pod
38995  [PDD] review pdd14_bignum.pod
38994  [PDD] review pdd13_bytecode.pod
38993  [PDD] review pdd12_assembly.pod
38992  [PDD] review pdd11_extending.pod
38991  [PDD] review pdd10_embedding.pod
38990  [PDD] review pdd09_gc.pod
38989  [PDD] review pdd08_keys.pod
38988  [PDD] review pdd07_codingstd.pod
38987  [PDD] review pdd06_pasm.pod
38986  [PDD] review PDD05_opfunc.pod
38985  [PDD] review PDD04_datatypes.pod
38984  [PDD] review pdd02_vtables.pod
38983  [PDD] review PDD01_overview.pod
38969  parrot source does not conform to standards
38967  Parrot release 0.5.0
7 - 8 weeks old
8 - 9 weeks old
9 - 10 weeks old
38887  Result of INFINITY or NAN stringification is platform dependent
10 - 11 weeks old
38823  [BUG] solaris 10 w gcc
11 - 12 weeks old
38788  make test results
12 - 13 weeks old
38764  Test results of parrot on Freebsd
13 - 14 weeks old
14 - 15 weeks old
15 - 16 weeks old
38594  [BUG] source line numbers
16 - 17 weeks old
17 - 18 weeks old
38469  [BUG] -O1 branch optimization
18 - 19 weeks old
38432  Exception thrown from constructor leads to oddness
19 - 20 weeks old
20 - 21 weeks old
---

Overview of Open Issues

Platform   Severity   Tag  Lang
Win32 3abandoned 05005threads   0  BASIC0
sco   0fatal 0notok 0  scheme   0
riscos0High  0ok0  tcl 25
qnx   0low   1Patch10  urm  0
powerux   0medium0regex 0  bc   0
other 0none  0sendToCPAN0  punie1
os390 0Normal1Todo174  Amber0
os2   0unknown   0unknown   0  Zcode0
openbsd   1Wishlist  3utilities 0  Lisp 0
next  0  notabug   0  ruby 0
Solaris   0   library   0  python   0
sunos 0   install   1  befunge  0
svr4  0   bounce0  bf   0
VOS   0   Bug  17  cola 0
vms   0   compiler  0  forth0
uts   0   configure 0  jako 0
unknown   0   core  0  m4   0
unix  0   dailybuild0  ook  0
unicosmk  0   docs  0  plot 0
unicos0   duplicate 0  perl60
sysv  0   wontfix   0
svr5  0
netbsd0
mswin32   0
dynixptx  0
dos   0
dgux  0
dec_osf   0
darwin0
cygwin_nt 0
cygwin0
bsdos 0
All   2
freebsd   0
generic   0
gnu   0
MacOS X   0
macos 0
machten   0
mac   0
lynxos0
Linux 0
irix640
irix  0
HPUX  0
aix   0
---

Ticket Status By Version

New or OpenResolved

---

Requesto

Re: A question about .begin_eh

2006-06-12 Thread Chip Salzenberg
On Sun, Jun 11, 2006 at 11:52:14AM -0400, Bob Rogers wrote:
>I notice the following paragraph, vintage late May, in
> pdd23_exceptions.pod:
> 
>   A C<.begin_eh> directive marks the beginning of a span of
>   opcodes which the programmer expects to throw an exception.  If
>   an exception occurs in the execution of the given opcode span,
>   Parrot will transfer control to I.
> 
> I assume this means that you intend to replace the current methodology
> of searching for an Exception_Handler object on the control stack when
> an error is thrown with a search through sub metadata.

That's the plan.  The upside is that on the non-exceptional case, nothing at
all needs to be done.  I just couldn't see the value in making the VM
allocate and free memory blocks on the control stack, over and over, when
no exceptions are occurring.

> How do you envision this interacting with C, e.g.?  Currently,
> it is straightforward for find_exception_handler to DTRT WRT other control
> stack entries.  Would the metadata also contain information about
> C and such?

I hadn't decided either way about C.  Seems to me that either
way will work though.  Could you spell out a little more of what you see
as being bad (or harder)?

> P.S.  FWIW, I am asking now because I have begun to work again on
> dynamic binding -- which of course makes this problem worse.

I can't see how.  Dynamically bind all you want, but the code of each
subroutine is fixed at compile time.  Having static metadata is no sin as
long as as the data that they're meta of are also static.
-- 
Chip Salzenberg <[EMAIL PROTECTED]>


[perl #39425] [TODO] namespaces: store_global variant

2006-06-12 Thread via RT
# New Ticket Created by  Will Coleda 
# Please include the string:  [perl #39425]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39425 >


Need a store_global opcode that takes a multi-element NS key.


--
Will "Coke" Coleda
[EMAIL PROTECTED]




[perl #39426] [BUG] Can't build with cygwin.

2006-06-12 Thread via RT
# New Ticket Created by  Will Coleda 
# Please include the string:  [perl #39426]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39426 >


The cygwin build fails with the following error during make:

Invoking Parrot to generate runtime/parrot/include/config.fpmc -- 
cross your fing
ers
./miniparrot.exe config_lib.pasm > runtime/parrot/include/config.fpmc
/bin/sh: line 1:  3088 Segmentation fault  (core dumped) ./ 
miniparrot.exe co
nfig_lib.pasm >runtime/parrot/include/config.fpmc
make: *** [runtime/parrot/include/config.fpmc] Error 139

This with r12926

$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /gcc/gcc-3.4.4/gcc-3.4.4-1/configure --verbose -- 
prefix=/usr --
exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libexecdir=/ 
usr/lib --man
dir=/usr/share/man --infodir=/usr/share/info --enable- 
languages=c,ada,c++,d,f77,
java,objc --enable-nls --without-included-gettext --enable-version- 
specific-runt
ime-libs --without-x --enable-libgcj --disable-java-awt --with-system- 
zlib --ena
ble-interpreter --disable-libgcj-debug --enable-threads=posix -- 
enable-java-gc=b
oehm --disable-win32-registry --enable-sjlj-exceptions --enable-hash- 
synchroniza
tion --enable-libstdcxx-debug : (reconfigured)
Thread model: posix
gcc version 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)

$ perl -v

This is perl, v5.8.7 built for cygwin-thread-multi-64int
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2005, Larry Wall

Perl may be copied only under the terms of either the Artistic  
License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access  
to the
Internet, point your browser at http://www.perl.org/, the Perl Home  
Page.


--
Will "Coke" Coleda
[EMAIL PROTECTED]




[perl #39425] [TODO] namespaces: store_global variant

2006-06-12 Thread Jonathan Worthington via RT
> [coke - Mon Jun 12 10:29:50 2006]:
> 
> Need a store_global opcode that takes a multi-element NS key.
> 
Implemented, plus test case.

Jonathan



[perl #39430] Method cache not always invalidated

2006-06-12 Thread via RT
# New Ticket Created by  Jonathan Worthington 
# Please include the string:  [perl #39430]
# in the subject line of all future correspondence about this issue. 
# https://rt.perl.org/rt3/Ticket/Display.html?id=39430 >


Both Parrot_store_global and store_sub call Parrot_invalidate_method_cache, 
however the versions of these that take keys (Parrot_store_global_p and 
store_sub_p) fail to do so. 



Re: A question about .begin_eh

2006-06-12 Thread Bob Rogers
   From: Chip Salzenberg <[EMAIL PROTECTED]>
   Date: Mon, 12 Jun 2006 06:54:24 -0700

   On Sun, Jun 11, 2006 at 11:52:14AM -0400, Bob Rogers wrote:
   >I notice the following paragraph, vintage late May, in
   > pdd23_exceptions.pod:
   > 
   >A C<.begin_eh> directive marks the beginning of a span of
   >opcodes which the programmer expects to throw an exception.  If
   >an exception occurs in the execution of the given opcode span,
   >Parrot will transfer control to I.
   > 
   > I assume this means that you intend to replace the current methodology
   > of searching for an Exception_Handler object on the control stack when
   > an error is thrown with a search through sub metadata.

   That's the plan.  The upside is that on the non-exceptional case, nothing at
   all needs to be done.  I just couldn't see the value in making the VM
   allocate and free memory blocks on the control stack, over and over, when
   no exceptions are occurring.

Yes, that's nice.  The downside, though, is that you have to do more
work when it's time to throw, but I agree that this is likely to happen
less often, at least for most error-handling situations.  (There's also
a load-time cost, I imagine, but it can't be very large.)

   Unfortunately, this is a step backwards from my perspective, as it is
already problematic to use Parrot as it exists now to implement ANSI
Common Lisp error signalling semantics, and any approach based on
metadata (being static) will make it more so.  However, I can still
implement ANSI semantics using dynamic binding, C, and
continuations that respect both (which they currently do not), though
the result won't interoperate with error handling in the rest of Parrot.

   > How do you envision this interacting with C, e.g.?  Currently,
   > it is straightforward for find_exception_handler to DTRT WRT other control
   > stack entries.  Would the metadata also contain information about
   > C and such?

   I hadn't decided either way about C.  Seems to me that either
   way will work though.  Could you spell out a little more of what you see
   as being bad (or harder)?

Actions are dynamic state that must nest properly with respect to error
handlers.  So you have to know how many actions to pop & invoke when
unwinding the stack before invoking a given error handler.  So it seems
to me that you would also have to lexicalize actions in order to give
find_exception_handler a clue.  (Or, more accurately, not to take away
the clue that it has.)  But you can't lexicalize actions completely
without removing the ability to invoke a closure as a cleanup action!

   > P.S.  FWIW, I am asking now because I have begun to work again on
   > dynamic binding -- which of course makes this problem worse.

   I can't see how.  Dynamically bind all you want, but the code of each
   subroutine is fixed at compile time.  Having static metadata is no sin as
   long as as the data that they're meta of are also static.
   -- 
   Chip Salzenberg <[EMAIL PROTECTED]>

True, but not all items on the control stack are as static as error
handlers, and they interact to a large degree.

   Dynamic bindings in particular require runtime dynamic state (namely,
the saved values), so there still needs to be something on the control
stack to capture it.  Of course, one can store metadata that records how
deep the binding stack should be at each handler (relative to the sub
entrypoint), given the right lexical cues in the source.  But since (I
believe) we still need binding and unbinding opcodes that do something
at runtime, and could therefore be conditionalized away, or might even
throw an error, this has its pitfalls.

-- Bob