in reply to Windows XP: Perl Command Line Interpreter Encountered an Error

The event log said: Faulting application perl.exe, version 5.8.0.806, faulting module perl58.dll, version 5.8.0.806, fault address 0x00045400.

I'm running this on my local computer. It has 512MB RAM, but it's not a live server. It was running other stuff at the same time, though nothing that's much of a resource-hog. I will post part of my code below, though I'm going to take out the middle that's just a bunch of SQL calls, regexes, and logarithmic functions. Wouldn't want someone to steal my code . :)
use threads; use threads::shared; # I used to use this, but I probably don't need +it any more print "THREAD SPAWNED.\n"; $thr1 = threads->new(\&mainsub,0); $thr1->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr2 = threads->new(\&mainsub,1); $thr2->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr3 = threads->new(\&mainsub,2); $thr3->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr4 = threads->new(\&mainsub,3); $thr4->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr5 = threads->new(\&mainsub,4); $thr5->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr6 = threads->new(\&mainsub,5); $thr6->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr7 = threads->new(\&mainsub,6); $thr7->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr8 = threads->new(\&mainsub,7); $thr8->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr9 = threads->new(\&mainsub,8); $thr9->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr10 = threads->new(\&mainsub,9); $thr10->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr11 = threads->new(\&mainsub,10); $thr11->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr12 = threads->new(\&mainsub,11); $thr12->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr13 = threads->new(\&mainsub,12); $thr13->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr14 = threads->new(\&mainsub,13); $thr14->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr15 = threads->new(\&mainsub,14); $thr15->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr16 = threads->new(\&mainsub,15); $thr16->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr17 = threads->new(\&mainsub,16); $thr17->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr18 = threads->new(\&mainsub,17); $thr18->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr19 = threads->new(\&mainsub,18); $thr19->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr20 = threads->new(\&mainsub,19); $thr20->detach; while (1) { # so that the main thread doesn't close # not sure if I need this anymore, though # (I used to print some statistics here) sleep 1; } sub mainsub { my ($which) = @_; use LWP::Simple; require "En.pm"; # En.pm is Lingua::Stem . . . I couldn't get it to install normally fo +r some reason use DBI; my $dbh = DBI->connect("DBI:mysql:crawler:localhost", "root", "", { RaiseError => 1 }) or die "Can't connect: ", $DBI::errstr; while (1) { # I close the program manually. . . . } # end of while(1) }
  • Comment on Re: Windows XP: Perl Command Line Interpreter Encountered an Error
  • Download Code

Replies are listed 'Best First'.
Re: Re: Windows XP: Perl Command Line Interpreter Encountered an Error
by Hofmator (Curate) on Mar 22, 2004 at 13:04 UTC
    Just as an aside ... looking at your code, why not simply write
    my @threads; for my $i (0..19) { print "THREAD SPAWNED.\n"; $threads[$i] = threads->new(\&mainsub, $i); $threads[$i]->detach; sleep 1; }
    instead of this
    print "THREAD SPAWNED.\n"; $thr1 = threads->new(\&mainsub,0); $thr1->detach; sleep 1; print "THREAD SPAWNED.\n"; $thr2 = threads->new(\&mainsub,1); $thr2->detach; sleep 1; # ...
    'red flag' code repetition.

    -- Hofmator