This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Unexpected stack dump using strtok() function


> -----Original Message-----
> From: Marco.Pettinella@marconi.com 
> [mailto:Marco.Pettinella@marconi.com]
> Sent: Thursday, June 22, 2000 1:57 PM
> To: cygwin@sourceware.cygnus.com
> Subject: Unexpected stack dump using strtok() function
> 
> 
> 
> 
> Hi everybody.
> I've just installed Cygwin 1.1.2 (uname -r : 1.1.2(0.21/3/2) ).
> 
> I'm doing some tests finalized to port a Unix application 
> under Windows NT.
> I noted that, while using strtok() function, I receive a SIGSEGV
> which causes a stack dump under NT.
> 
> The little program I used to understand this behaviour was 
> the following:
> 
> #include <stdio.h>
> #include <string.h>
> #include <stdlib.h>
> 
> int
> main()
> {
>      static char *string = "MARCO#PETTINELLA";
>      static char *separator = "#";
>      char *name;
>      char *surname;
> 
>      name = NULL;
>      surname = NULL;
> 
>      name = strtok (string, separator);
>      if (name == NULL) {
>           fprintf (stderr, "NAME IS NULL!\n");
>           return -1;
>      }
>      fprintf (stderr, "NAME: %s\n", name);
> 
>      surname = strtok (0, separator);
>      if (surname == NULL) {
>           fprintf (stderr, "SURNAME IS NULL!\n");
>           return -1;
>      }
>      fprintf (stderr, "SURNAME: %s\n", surname);
> 
>      return 0;
> }
> 
> I also compiled this program under SCO Unix and HP UX, and I 
> verified that
> it runs correctly, as expected.
> 
> I'm wondering if this SIGSEGV is due to a misconfiguration of 
> my gcc or if it is
>  a bug.
> Does anybody have experienced a problem like this?
> 
> My release of gcc is 2.95.2-1.
> 
> Thanks in advance for your help. Marco

A couple of thoughts:
1) The literal 'string' ought to be in a read-only data area.
   So the sigsegv could come from strtok trying to write a 0 over the first
hash.
   Not all compilers/OS's support such a concept, so it may not show up 
   in different implementations.
2) Did you try looking at the stack trace? It should show which bit of your
code,
   was being executed when the signal was received.	


Also, which gcc options are you using?


Hope this helps,
Mike

--
Mike Little
Share what you know. Learn what you don't.

ServicePOWER Business Solutions Ltd
home: mike@ampersoft.co.uk

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]