bus error in strsep
Stefan Sperling
stsp at stsp.in-berlin.de
Wed Jul 6 18:55:41 GMT 2005
Hello hackers,
I am getting a bus error in my application when I call strsep
and it matches a character. It doesn't matter whether I call
the strsep from my libc or a freshly compiled one, the error
stays the same.
This is my test case:
$ cat strsep.c
#define NULL ((void*)0)
/* copied verbatim from /usr/src/lib/libc/string/strsep.c,
* except for the name change
*/
char *
mystrsep(stringp, delim)
char **stringp;
const char *delim;
{
char *s;
const char *spanp;
int c, sc;
char *tok;
if ((s = *stringp) == NULL)
return (NULL);
for (tok = s;;) {
c = *s++;
spanp = delim;
do {
if ((sc = *spanp++) == c) {
if (c == 0)
s = NULL;
else
s[-1] = 0;
*stringp = s;
return (tok);
}
} while (sc != 0);
}
/* NOTREACHED */
}
int main(int argc, char* argv[])
{
char *c = "whats:your:name:buddy?";
(void*)mystrsep(&c, ":");
}
$ gcc -g -o strsep strsep.c
$ gdb strsep
<gnu license>
(gdb) run
Starting program: /home/stsp/test/strsep
Program received signal SIGBUS, Bus error.
0x080484f2 in mystrsep (stringp=0xbfbfea34, delim=0x80485e6 ":") at strsep.c:26
26 s[-1] = 0;
(gdb) print s[-1]
$1 = 58 ':'
(gdb)
When I single step through mystrsep the program works fine.
I am running FreeBSD-current from 17th June 2005 on an Athlon-XP,
no SMP involved. I can reproduce the error on a dual Celeron box
running FreeBSD-5.4-RELEASE with SMP.
And I also get the same error with similar code using strtok.
Can anyone else reproduce this?
thanks a lot,
--
stefan
http://stsp.in-berlin.de PGP Key: 0xF59D25F0
More information about the freebsd-hackers
mailing list