Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <99B82AA9708ED0119B55006097125A00363EC1@ifk63.mach.uni-karlsruhe.de> From: Heribert Dahms To: "'Mike Little'" , "'Marco DOT Pettinella AT marconi DOT com'" , cygwin AT sourceware DOT cygnus DOT com Subject: RE: Unexpected stack dump using strtok() function Date: Thu, 22 Jun 2000 17:20:55 +0200 X-Priority: 3 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.0.1457.3) Content-Type: text/plain 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 > > #include > > #include > > > > 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