Need example of program that will sometimes but not always segmentation fault
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
add a comment |
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
add a comment |
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
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
segmentation-fault
edited Nov 28 '18 at 18:54
ron
asked Nov 28 '18 at 18:49
ronron
639314
639314
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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).
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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).
add a comment |
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).
add a comment |
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).
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).
answered Nov 28 '18 at 19:08
Gold DragonGold Dragon
42519
42519
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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