I've got a *very* strange problem with Perl segfaulting seemingly at
random, but quite predictably based on things that it really shouldn't
care about (like comments).

It's so weird that my first thought was that it was faulty memory in my
machine.  But I've tried it on two machines (both macs) and see the same
problem.  I would appreciate it if some other people could verify the
problem and/or throw any light on it.  There's a small (< 1k) tgz here
containing the files:

  http://wardley.org/perl/broken_glass.tgz

I should mention that this problem only manifests itself on 5.8.8,
and 5.10 seems fine (haven't tried it on any other versions). However,
it is soooo weird that it's quite possible that I'm just not tickling
it right on 5.10.  Of course, it might have been identified and specifically
fixed for 5.10, but I can't see any mention of it on perlbug (although I
didn't look *really* hard).

It's at the point now where deleting or changing a word in a *comment*
is the difference between it segfaulting or not.

Here's my script:

  use strict;
  use warnings;
  use lib qw( . );
  use Glass;

Here's the Glass.pm module:

  package Glass;

  use Broken
      hello => {
          foo =>  1,
          foo =>  2,
          foo =>  3,
          ...etc... all the way to...
          foo => 61,
          foo => 62,
          foo => qr//,  # change this to 63 and it works!
          foo => 64,
       };

Here's the Broken.pm module.  It does absolutely nothing at all other
than print a message.  It just contains a load of comments.

  package Broken;

  # The next line is repeated 56 times in total.
  # foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
  (followed by another 55 lines of foo)

  print "Got to the end of the Broken.pm module";

  1;

If I delete one of those comment lines, then the program stops segfaulting.
In fact, I can delete the final 'foo' on the last line and it works, put it
back in and it segfaults again.

If I change that qr// in the Glass module to the number 63 then it works OK.
If I move the qr// line up a line, down a line, or to indeed to any other
line, then it works OK. If I add a line or remove a line, then it works fine.
The fact that there are 64 entries in the hash is suspicious, although
they've all got the same key, so there's only actually 1.

Before I go digging deeper (having already lost most of the afternoon to
this), can someone confirm the problem for me?

Cheers
A

Reply via email to