Need example of program that will sometimes but not always segmentation fault












-1















For example this piece of code should always segmentation fault when run in linux:



int main ( void )
{
int array[10];

array[123456789] = 1;
}


I can explain the above to anyone and show the obvious out-of-bounds reference to a 10 element array... simple enough.



Keeping more real-world programs in context, can someone provide an explanation for:



why a given program (C or fortran) with a given input run and produce a segmentation fault, and then run again with nothing changed and NOT produce a segmentation fault?



how would you go about answering: only sometimes the program ends with a segmentation fault other times it runs to completion with nothing else having changed so how is it not a hardware error?










share|improve this question





























    -1















    For example this piece of code should always segmentation fault when run in linux:



    int main ( void )
    {
    int array[10];

    array[123456789] = 1;
    }


    I can explain the above to anyone and show the obvious out-of-bounds reference to a 10 element array... simple enough.



    Keeping more real-world programs in context, can someone provide an explanation for:



    why a given program (C or fortran) with a given input run and produce a segmentation fault, and then run again with nothing changed and NOT produce a segmentation fault?



    how would you go about answering: only sometimes the program ends with a segmentation fault other times it runs to completion with nothing else having changed so how is it not a hardware error?










    share|improve this question



























      -1












      -1








      -1








      For example this piece of code should always segmentation fault when run in linux:



      int main ( void )
      {
      int array[10];

      array[123456789] = 1;
      }


      I can explain the above to anyone and show the obvious out-of-bounds reference to a 10 element array... simple enough.



      Keeping more real-world programs in context, can someone provide an explanation for:



      why a given program (C or fortran) with a given input run and produce a segmentation fault, and then run again with nothing changed and NOT produce a segmentation fault?



      how would you go about answering: only sometimes the program ends with a segmentation fault other times it runs to completion with nothing else having changed so how is it not a hardware error?










      share|improve this question
















      For example this piece of code should always segmentation fault when run in linux:



      int main ( void )
      {
      int array[10];

      array[123456789] = 1;
      }


      I can explain the above to anyone and show the obvious out-of-bounds reference to a 10 element array... simple enough.



      Keeping more real-world programs in context, can someone provide an explanation for:



      why a given program (C or fortran) with a given input run and produce a segmentation fault, and then run again with nothing changed and NOT produce a segmentation fault?



      how would you go about answering: only sometimes the program ends with a segmentation fault other times it runs to completion with nothing else having changed so how is it not a hardware error?







      segmentation-fault






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 28 '18 at 18:54







      ron

















      asked Nov 28 '18 at 18:49









      ronron

      639314




      639314
























          1 Answer
          1






          active

          oldest

          votes


















          0














          An index out of bounds is a common cause of a segfault, but does not necessarily always result in one.



          The operating system allocates memory to the program, both statically (when loading the program image), and dynamically (via calls to malloc() et al.). A segfault occurs when the OS detects that the program is trying to access memory that is not allocated to it.



          The OS does not (generally) guarantee the relationship between any two regions of allocated memory. If the memory at address arr + i is allocated to the program, arr[i] will 'work' (access the memory), regardless of whether it is part of the array or some other structure (this is also how buffer overflow attacks work).






          share|improve this answer
























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53526164%2fneed-example-of-program-that-will-sometimes-but-not-always-segmentation-fault%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            An index out of bounds is a common cause of a segfault, but does not necessarily always result in one.



            The operating system allocates memory to the program, both statically (when loading the program image), and dynamically (via calls to malloc() et al.). A segfault occurs when the OS detects that the program is trying to access memory that is not allocated to it.



            The OS does not (generally) guarantee the relationship between any two regions of allocated memory. If the memory at address arr + i is allocated to the program, arr[i] will 'work' (access the memory), regardless of whether it is part of the array or some other structure (this is also how buffer overflow attacks work).






            share|improve this answer




























              0














              An index out of bounds is a common cause of a segfault, but does not necessarily always result in one.



              The operating system allocates memory to the program, both statically (when loading the program image), and dynamically (via calls to malloc() et al.). A segfault occurs when the OS detects that the program is trying to access memory that is not allocated to it.



              The OS does not (generally) guarantee the relationship between any two regions of allocated memory. If the memory at address arr + i is allocated to the program, arr[i] will 'work' (access the memory), regardless of whether it is part of the array or some other structure (this is also how buffer overflow attacks work).






              share|improve this answer


























                0












                0








                0







                An index out of bounds is a common cause of a segfault, but does not necessarily always result in one.



                The operating system allocates memory to the program, both statically (when loading the program image), and dynamically (via calls to malloc() et al.). A segfault occurs when the OS detects that the program is trying to access memory that is not allocated to it.



                The OS does not (generally) guarantee the relationship between any two regions of allocated memory. If the memory at address arr + i is allocated to the program, arr[i] will 'work' (access the memory), regardless of whether it is part of the array or some other structure (this is also how buffer overflow attacks work).






                share|improve this answer













                An index out of bounds is a common cause of a segfault, but does not necessarily always result in one.



                The operating system allocates memory to the program, both statically (when loading the program image), and dynamically (via calls to malloc() et al.). A segfault occurs when the OS detects that the program is trying to access memory that is not allocated to it.



                The OS does not (generally) guarantee the relationship between any two regions of allocated memory. If the memory at address arr + i is allocated to the program, arr[i] will 'work' (access the memory), regardless of whether it is part of the array or some other structure (this is also how buffer overflow attacks work).







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 28 '18 at 19:08









                Gold DragonGold Dragon

                42519




                42519
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53526164%2fneed-example-of-program-that-will-sometimes-but-not-always-segmentation-fault%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Lallio

                    Futebolista

                    Jornalista