Are you passing the arguments to execve correctly? Usually the EFAULT error occurs, cause the argument format to execve is not correct and the kernel is unable to interpret the executable that needs to be launched, or the parameters that need to be passed to the new process. Just an example: http://www.linuxquestions.org/questions/programming-9/execve-alwayse-produce... On Thu, Apr 23, 2015 at 9:00 AM <kernelnewbies-request@kernelnewbies.org> wrote:
Send Kernelnewbies mailing list submissions to kernelnewbies@kernelnewbies.org
To subscribe or unsubscribe via the World Wide Web, visit http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies or, via email, send a message with subject or body 'help' to kernelnewbies-request@kernelnewbies.org
You can reach the person managing the list at kernelnewbies-owner@kernelnewbies.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Kernelnewbies digest..."
Today's Topics:
1. How can I fetch the files likely directory /usr/src/kernels/<kernel version> from kernel source tree? (tianlilai) 2. execve error (Rohith)
----------------------------------------------------------------------
Message: 1 Date: Thu, 23 Apr 2015 17:59:56 +0800 From: tianlilai <laitianli2015@outlook.com> Subject: How can I fetch the files likely directory /usr/src/kernels/<kernel version> from kernel source tree? To: kernelnewbies@kernelnewbies.org Message-ID: <BLU436-SMTP88F0913B3897AE70E7C950A9ED0@phx.gbl> Content-Type: text/plain; charset="utf-8"; format=flowed
Hi,I have built the kernel source tree and running in PC mechine.Now I want to fetch the files likely directory /usr/src/kernels/<kernel version> from this kernel source tree.How can I do? Thanks very much!
------------------------------
Message: 2 Date: Thu, 23 Apr 2015 17:55:22 +0530 From: Rohith <itsnotrohit@gmail.com> Subject: execve error To: kernelnewbies@kernelnewbies.org Message-ID: < CABsTBT6S0vRNFo0bxxBcWDx3k8JMpzbYyKbbUB8oxT-W+8Tr-A@mail.gmail.com> Content-Type: text/plain; charset="utf-8"
Hi all,
I'm facing a strange issue with execve. It fails with -EFAULT intermittently. I found that whenever it failed the stack allocated to the process is in the last page of the CONFIG_TASK_SIZE.
For example, if CONFIG_TASK_SIZE is set to 0x4000_0000, the process would fail in execve if the stack happens to be in the page:
3ffdf000-40000000 rw-p 00000000 00:00 0 [stack]
I tried changing CONFIG_TASK_SIZE=0x30000000 and the process this time fails at the end 0x30000000 address.
I also found that the execve seem to use the largest stack address (STACK_TOP_MAX, function __bprm_mm_init(), fs/exec.c) while copying argv/envp to the new process space.
I don't know how to debug further. I feel that the user process stack should never be allocated at the CONFIG_TASK_SIZE? Any idea or suggestion on how to debug further, please tell me.
thanks, rohit
Yes. The program works fine all the times except when the process stack is allocated at the end of CONFIG_TASK_SIZE. If I disable the stack randomization then it fails every time since the process stack is always allocated at the end of the CONFIG_TASK_SIZE. echo 0 > /proc/sys/kernel/randomize_va_space So I believe the current process and the execv code both seem to work on the last page of the user stack - and execv() corrupting the process stack and return EFAULT.. Thanks, rohith On Thu, Apr 23, 2015 at 11:26 PM, Avinash Sridharan < avinash.sridharan@gmail.com> wrote:
Are you passing the arguments to execve correctly? Usually the EFAULT error occurs, cause the argument format to execve is not correct and the kernel is unable to interpret the executable that needs to be launched, or the parameters that need to be passed to the new process.
Just an example:
http://www.linuxquestions.org/questions/programming-9/execve-alwayse-produce...
On Thu, Apr 23, 2015 at 9:00 AM <kernelnewbies-request@kernelnewbies.org> wrote:
Send Kernelnewbies mailing list submissions to kernelnewbies@kernelnewbies.org
To subscribe or unsubscribe via the World Wide Web, visit http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies or, via email, send a message with subject or body 'help' to kernelnewbies-request@kernelnewbies.org
You can reach the person managing the list at kernelnewbies-owner@kernelnewbies.org
When replying, please edit your Subject line so it is more specific than "Re: Contents of Kernelnewbies digest..."
Today's Topics:
1. How can I fetch the files likely directory /usr/src/kernels/<kernel version> from kernel source tree? (tianlilai) 2. execve error (Rohith)
----------------------------------------------------------------------
Message: 1 Date: Thu, 23 Apr 2015 17:59:56 +0800 From: tianlilai <laitianli2015@outlook.com> Subject: How can I fetch the files likely directory /usr/src/kernels/<kernel version> from kernel source tree? To: kernelnewbies@kernelnewbies.org Message-ID: <BLU436-SMTP88F0913B3897AE70E7C950A9ED0@phx.gbl> Content-Type: text/plain; charset="utf-8"; format=flowed
Hi,I have built the kernel source tree and running in PC mechine.Now I want to fetch the files likely directory /usr/src/kernels/<kernel version> from this kernel source tree.How can I do? Thanks very much!
------------------------------
Message: 2 Date: Thu, 23 Apr 2015 17:55:22 +0530 From: Rohith <itsnotrohit@gmail.com> Subject: execve error To: kernelnewbies@kernelnewbies.org Message-ID: < CABsTBT6S0vRNFo0bxxBcWDx3k8JMpzbYyKbbUB8oxT-W+8Tr-A@mail.gmail.com> Content-Type: text/plain; charset="utf-8"
Hi all,
I'm facing a strange issue with execve. It fails with -EFAULT intermittently. I found that whenever it failed the stack allocated to the process is in the last page of the CONFIG_TASK_SIZE.
For example, if CONFIG_TASK_SIZE is set to 0x4000_0000, the process would fail in execve if the stack happens to be in the page:
3ffdf000-40000000 rw-p 00000000 00:00 0 [stack]
I tried changing CONFIG_TASK_SIZE=0x30000000 and the process this time fails at the end 0x30000000 address.
I also found that the execve seem to use the largest stack address (STACK_TOP_MAX, function __bprm_mm_init(), fs/exec.c) while copying argv/envp to the new process space.
I don't know how to debug further. I feel that the user process stack should never be allocated at the CONFIG_TASK_SIZE? Any idea or suggestion on how to debug further, please tell me.
thanks, rohit
On Thu, Apr 23, 2015 at 10:56 AM, Avinash Sridharan <avinash.sridharan@gmail.com> wrote:
Are you passing the arguments to execve correctly? Usually the EFAULT error occurs, cause the argument format to execve is not correct and the kernel is unable to interpret the executable that needs to be launched, or the parameters that need to be passed to the new process.
Just an example: http://www.linuxquestions.org/questions/programming-9/execve-alwayse-produce...
Specifically, both the argv[] and envp[] arrays need to end with a null pointer. Forgetting this often leads to intermittent or situation-dependent strange behavior or crashes, because sometimes that memory happens to contain zeros anyway, and sometimes not. Henry
Thanks all ! On Fri, Apr 24, 2015 at 10:48 PM, Henry Hallam <henry@pericynthion.org> wrote:
On Thu, Apr 23, 2015 at 10:56 AM, Avinash Sridharan <avinash.sridharan@gmail.com> wrote:
Are you passing the arguments to execve correctly? Usually the EFAULT error occurs, cause the argument format to execve is not correct and the kernel is unable to interpret the executable that needs to be launched, or the parameters that need to be passed to the new process.
Just an example:
http://www.linuxquestions.org/questions/programming-9/execve-alwayse-produce...
Specifically, both the argv[] and envp[] arrays need to end with a null pointer. Forgetting this often leads to intermittent or situation-dependent strange behavior or crashes, because sometimes that memory happens to contain zeros anyway, and sometimes not.
Henry
participants (3)
-
Avinash Sridharan -
Henry Hallam -
Rohith