develooper Front page | perl.wxperl.users | Postings from September 2012

Re: Crashy bug in either Wx or Perl 5.12

Thread Previous | Thread Next
From:
Mark Dootson
Date:
September 21, 2012 19:36
Subject:
Re: Crashy bug in either Wx or Perl 5.12
Message ID:
505D2400.4020801@znix.com
Hi,

It was a long time happening, but this is fixed in Wx 0.9912 recently 
released to cpan.

Regards

Mark

On 01/12/2010 21:06, Eric J. Roode wrote:
>     I have a small test program that consistently crashes.  I can't tell
> if the crash is due to Wx or Perl, but I can trigger it on and off by
> how I use a recent Perl feature.
>   Here is the program (it is also attached as "test.pl <http://test.pl>"):
>
>     #!perl
>     use Wx;
>     package MyApp;
>     use base 'Wx::App';
>     use MyList;
>     sub OnInit
>     {
>          my $self = shift;
>          my $frame = Wx::Frame->new(undef, -1, 'title');
>          my $panel = Wx::Panel->new($frame);
>          MyList->new(parent => $panel, pos => [10, 30], size => [500, 200]);
>          $frame->Show(1);
>          return 1;
>     }
>     # ---------------------------------
>     # Create the application object, and pass control to it.
>     package main;
>     my $app = MyApp->new;
>     $app->MainLoop;
>
> "MyList" is a control derived from Wx::ListCtrl.  Here is its code (also
> attached as "MyList.pm"):
>
>     package MyList;
>     use Modern::Perl;
>     use Wx qw(:listctrl);
>     use base 'Wx::ListCtrl';
>     use Hash::Util::FieldHash;
>     Hash::Util::FieldHash::fieldhash     # This is line 7
>     my %some_attribute;
>     sub new
>     {
>          my $class = shift;
>          my %parm = @_;
>          my $pos  = $parm{pos}  || [-1, 1];
>          my $size = $parm{size} || [-1, 1];
>          # Construct list control object
>          my $self  = $class->SUPER::new($parm{parent}, -1, $pos, $size,
>                                         wxLC_REPORT | wxLC_HRULES |
>     wxLC_VRULES,
>                                        );
>          # Init member data
>          $some_attribute{$self} = 'sad';
>          # Initialize column
>          $self->InsertColumn(0, 'Zero');
>          return $self;
>     }
>     1;
>
>      This is a pretty straightforward, inside-out object.  It doesn't do
> anything but call Wx::ListCtrl's constructor with some fixed style
> parameters, and inserts a column titled "Zero".  It stores the value
> "sad" in a member attribute that is a Fieldhash.
>      This program crashes consistently every time I run it.  My system
> is Windows 7 Professional 64-bit, 4gb RAM, dual-monitor, with Strawberry
> Perl 5.12.1 (MSWin32-x86-multi-thread), with Wx.pm version 0.98, and
> wxWidgets 2.8.10.  The Windows Error Report is attached as "WEReport.txt".
>      Now the interesting part:  Comment out line 7 (turning
> %some_attribute from a field hash into a regular old hash), and the
> program no longer crashes.  I don't know if Hash::Util::FieldHash is
> doing something bad, or if it's doing something that confuses Wx, or if
> Wx is doing something bad.
> --
> Eric J. Roode


Thread Previous | 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