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

Hi, I am encountering a segmentation fault while carrying out some operation in side a foreach loop. The foreach loop is iterating on an array having 2 elements. But if I remove the foreach loop and perform the operations on one of the elements of the array, then no seg fault is happening.

is there any cpan module to debug what is causing the segmentation fault ? Or how can I investigate the reason ? Apparently the code is pretty simple , which is just running some foreach loops inside one outer foreach loop. Even I could point out which foreach loop is responsible and can get away with the problem by commenting out that foreach block. But what are the ways to find out the cause and how can that be handled? If anyone can cite some possible reasons to look out for which a perl program may get seg fault, will be helpful.

# The code looks something like

foreach my $elem (@$arrayRef) { foreach () { foreach () { } } # commenting out this below loop avoids the seg fault foreach () { } }
Or else , if I comment out the outermost foreach and carryout the operation on a single element($$arrayRef[0]) of the @$arrayRef, the seg fault is not happening.

Replies are listed 'Best First'.
Re: how to debug a segmentation fault
by hippo (Bishop) on Oct 16, 2013 at 17:36 UTC
Re: how to debug a segmentation fault
by Laurent_R (Canon) on Oct 16, 2013 at 17:42 UTC

    What are you actually doing in the loop? If you are modifying the number of element of the array on which you are looping, you might encounter some problems (although I can't remember if this type of things creates a segmentation fault or some other problems).

Re: how to debug a segmentation fault
by Anonymous Monk on Oct 16, 2013 at 21:44 UTC

    ... ... vagueness ...

    Its easy, you fireup a debugger (not the perl debugger, but gdb or windbg or equivalent), and then something something...