I wondering if anyone has seen this before. In my application, any time I make
a call to wx::MessageBox(), the application hangs and chews up 100% of the CPU.
The call looks like this:
Wx::MessageBox
(
$message . "\n" .
"Would you like to generate a debug stack trace?",
$title,
wxICON_ERROR|wxYES_NO
);
If I write just a simple little script that calls this it works fine, so it is
something in my application that is causing this. Is it because I'm not
passing a parent window to it? Because I'm using this for error reporting I
don't have access to the top level window object. I ran it with the Perl
debugger, and turned on tracing just before this call and this is all that is
does:
AlchemistLib::error_report(AlchemistLib.pm:304):
304: my $answer = Wx::MessageBox
305: (
306: $message . "\n" .
307: "Would you like to generate a debug stack trace?",
308: $title,
309: wxICON_ERROR|wxYES_NO
310: );
DB<1> t
Trace = on
DB<1> n
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:41):
41: my( $constname );
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:43):
43: ($constname = $AUTOLOAD) =~ s<^.*::>{};
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:44):
44: return 0 if $constname eq 'wxVERSION';
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:46):
46: my( $val ) = constant($constname, 0 );
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:48):
48: if ($! != 0) {
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:55):
55: eval "sub $AUTOLOAD { $val }";
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:56):
56: goto &$AUTOLOAD;
Wx::wxICON_ERROR((eval
121)[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:55]:1):
1: sub Wx::wxICON_ERROR { 512 }
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:41):
41: my( $constname );
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:43):
43: ($constname = $AUTOLOAD) =~ s<^.*::>{};
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:44):
44: return 0 if $constname eq 'wxVERSION';
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:46):
46: my( $val ) = constant($constname, 0 );
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:48):
48: if ($! != 0) {
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:55):
55: eval "sub $AUTOLOAD { $val }";
Wx::AUTOLOAD(/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:56):
56: goto &$AUTOLOAD;
Wx::wxYES_NO((eval
122)[/usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/Wx.pm:55]:1):
1: sub Wx::wxYES_NO { 10 }
The call to Wx::wxYES_NO is where it stops. When I use different flags for
wxMESSAGE_BOX it stops at different, but similar places.
I'm kind of at a loss as how to debug this.
Thanks,
Daniell Freed
[email protected]