Mail Archives: cygwin/2000/06/22/11:24:57
Hi,
yes, this code is non-portable!
I checked that it does core dump on HP-UX 10.20
compiled by just gcc, and it works with -fwritable-strings.
HP's compilers by default don't make strings readonly!
Bye, Heribert (heribert_dahms AT icon-gmbh DOT de)
> -----Original Message-----
> From: Mike Little [SMTP:M DOT Little AT servicepower DOT com]
> Sent: Thursday, June 22, 2000 15:21
> To: 'Marco DOT Pettinella AT marconi DOT com'; cygwin AT sourceware DOT cygnus DOT com
> Subject: RE: Unexpected stack dump using strtok() function
>
> > -----Original Message-----
> > From: Marco DOT Pettinella AT marconi DOT com
> > [mailto:Marco DOT Pettinella AT marconi DOT com]
> > Sent: Thursday, June 22, 2000 1:57 PM
> > To: cygwin AT sourceware DOT cygnus DOT 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 AT ampersoft DOT co DOT uk
>
> --
> Want to unsubscribe from this list?
> Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -