title: Stack overflow in thread 1: can't grow stack to 0xffe601ff8 Valgrind Error
body: <p>I am new to C programming, any help is appreciated. The code will be used to check if a pid is still active. The argument that provides the path to the pid file is passed via command line. Please see my Valgrind and GDB errors below, along with the code. </p>
  
  <pre><code>**Valgrind Error**
  ==6553== Memcheck, a memory error detector
  ==6553== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
  ==6553== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
  ==6553== Command: ./pid1108_2 /var/run/httpd/httpd.pid
  ==6553== 
  ==6553== Stack overflow in thread 1: can't grow stack to 0xffe601ff8
  ==6553== 
  ==6553== Process terminating with default action of signal 11 (SIGSEGV)
  ==6553==  Access not within mapped region at address 0xFFE601FF8
  ==6553==    at 0x40069F: kill (in /home/ehubbard/C_Checks/pid1108_2)
  ==6553==  If you believe this happened as a result of a stack
  ==6553==  overflow in your program's main thread (unlikely but
  ==6553==  possible), you can try to increase the size of the
  ==6553==  main thread stack using the --main-stacksize= flag.
  ==6553==  The main thread stack size used in this run was 10485760.
  ==6553== Stack overflow in thread 1: can't grow stack to 0xffe601ff0
  ==6553== 
  ==6553== Process terminating with default action of signal 11 (SIGSEGV)
  ==6553==  Access not within mapped region at address 0xFFE601FF0
  ==6553==    at 0x4801661: _vgnU_freeres (vg_preloaded.c:58)
  ==6553==  If you believe this happened as a result of a stack
  ==6553==  overflow in your program's main thread (unlikely but
  ==6553==  possible), you can try to increase the size of the
  ==6553==  main thread stack using the --main-stacksize= flag.
  ==6553==  The main thread stack size used in this run was 10485760.
  ==6553== 
  ==6553== HEAP SUMMARY:
  ==6553==     in use at exit: 0 bytes in 0 blocks
  ==6553==   total heap usage: 1 allocs, 1 frees, 568 bytes allocated
  ==6553== 
  ==6553== All heap blocks were freed -- no leaks are possible
  ==6553== 
  ==6553== For counts of detected and suppressed errors, rerun with: -v
  ==6553== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
  
  **GDB Error**
  Program received signal SIGSEGV, Segmentation fault.
  0x000000000040068f in kill ()`enter code here`
  </code></pre>
  
  
  
  <pre><code>#include &lt;stdio.h&gt;      //Needed for standard I/O
  #include &lt;stdlib.h&gt;     //Needed for exit
  #include &lt;sys/types.h&gt;  //Needed for kill function
  #include &lt;signal.h&gt;     //Needed for kill function
  #include &lt;inttypes.h&gt;
  #include &lt;iso646.h&gt;
  
  int kill(pid_t pid, int sig);
  
  int main(int argc, char *argv[])
  {
      FILE *fp;
      int pid;
  
      fp = fopen(argv[1], "r");
  
      if (fp == NULL){
          printf("Pid file doesn't exist:");
          return 2;}
      else {
            fscanf(fp, "%d", &amp;pid);
            printf("Pid number is %d", pid);
            fclose(fp);
           }
      kill(pid, 0);
  
  }
  
  int kill(pid_t pid, int sig)
  {
      if ((kill (pid, sig)) == -1){
           printf("Pid %d is no longer valid", pid);
           return 2;
      }
      else if ((kill (pid, sig)) == 0){
           printf("Pid %d is active.", pid);
           return 0;
      }
      else{
           printf("Could not determine value!");
           return 2;
      }
  }
  </code></pre>