Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

How do I stop/debug/trace segmentation faults? (Moved from Q&A)

by Russ (Deacon)
on Dec 07, 2000 at 22:00 UTC ( #45557=perlquestion: print w/replies, xml ) Need Help??

Russ has asked for the wisdom of the Perl Monks concerning the following question:

This post was moved from Categorized Questions and Answers.
Please do not vote for this node. It will affect the wrong user.
Thank You -- Q&AEditors

I have a script that collects SNMP information on a bunch of routers that continues to seg fault on me about 10-25 % of the time.

It creates an array of Net::SNMP objects and then steps through that array, querying each router for certain information and then writing it all out to an RRD file.

I have it doing some minor logging, but since it runs on a crontab I've never actually seen it seg fault. I believe it's doing it during the gather phase, but I'm not sure.

My longwinded question is, is there any way I can track down what's causing this or at least where it's happening ? I've tried to throw some eval statements, but that doesn't stop the segmentation fault

BTW, I'm running it on a FreeBSD 3.4 box with 512Mb of RAM. The box is rather busy, so could it be a lack of memory issue ?

Any help at all would be greatly appreciated.

  • Comment on How do I stop/debug/trace segmentation faults? (Moved from Q&A)

Replies are listed 'Best First'.
Re: How do I stop/debug/trace segmentation faults? (Moved from Q&A)
by rlk (Pilgrim) on Dec 07, 2000 at 22:21 UTC
      Actually, you wouldn't want to do that, as the logfile would be written over every time the cronjob ran. You'd probably want to do something liike this:

      date >> logfile && perl -d (your script here) 2>&1 >> logfile

      The >> will append to the logfile rather than overwrite it, and the 2>&1 redirects stderr to stdout, assuming you are running bash. I'm not sure of the syntax for tcsh/ksh/csh/etc, but i'm pretty sure that there will be more useful debugging info in stderr than in stdout.


      Disclaimer: This post may contain inaccurate information, be habit forming, cause atomic warfare between peaceful countries, speed up male pattern baldness, interfere with your cable reception, exile you from certain third world countries, ruin your marriage, and generally spoil your day. No batteries included, no strings attached, your mileage may vary.
Re: How do I stop/debug/trace segmentation faults? (Moved from Q&A)
by Russ (Deacon) on Dec 07, 2000 at 22:20 UTC
Re: How do I stop/debug/trace segmentation faults? (Moved from Q&A)
by whiteEFunk (Acolyte) on Feb 24, 2005 at 08:41 UTC
Sieve Method
by DentArthurDent (Monk) on Aug 29, 2003 at 12:37 UTC
    I've never had a perl script dump, but in C the best way is often to pepper the code with logging statements and see which is the last one to come out. Just make sure that all of the statements will get printed directly and not buffered or you'll confuse yourself!

    Hope that helps!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://45557]
Approved by root
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2021-05-10 19:47 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (106 votes). Check out past polls.