I have a very large perl script that runs for quite a long time and does a large number of complex calculations, large data structure manipulations and file IO. Its currently running in Perl 5.6.0 for Linux. After running for a while, the script dies with a 'segmentation violation'. I've added many many print statements to the code, but adding them 'moves' the segmentation violation to another section of the code.

In older C (K&R) compilers, I've seen this behavoiur when there are frequent calls to functions that incorrectly declare their arguments. I.e. the function expects a double, but gets a float instead. After some period of time, the stack becomes badly damaged. Eventually something breaks.

Bad function declarations and dangling pointers in modules are possible explantions. What other causes are there for segmentation violations in 5.6.0?

My problem is that I don't know how to track down the module responsible or even add in code that could prevent this from occuring. If I run the script in the Perl debugger, it crashes along with the script. Does anybody have an good ideas on how I can track down this problem?


Paul.

In reply to segmentation violations by Phomer

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.