Bruce Dubbs wrote: >Randy McMurchy wrote: > > >>Hi all, >> >>I'm seeing a reproduceable issue with the current texinfo/teTeX >>combination of LFS/BLFS packages. I don't know where to begin to >>look so I'll describe symptoms and see if this rings a bell to >>anyone. >> >>I see segmentation faults when using the texi2dvi and texi2pdf >>programs. I'm using current LFS SVN (SVN-20051130) with teTeX-3.0. >> >>For a similar error I'm seeing, check out the error message at >>the bottom of this page: >>http://lists.gnu.org/archive/html/bug-automake/2005-10/msg00004.html >> >>The seg-faults using texindex are reproduceable and consistently >>happen when using texi2dvi to format .texi files. >> >>It is the texindex program which is ultimately seg-faulting. >> >>After building LFS using LFS SVN-20050831, I do not see these >>segfaults. So, perhaps it is something with the most recent >>Glibc/GCC combination of current SVN. The texinfo and teTeX package >>versions are the same. >> >>Anyone with any knowledge about this, or if you can confirm this >>seg-faulting behavior, please respond to this message. >> >> > >Randy, > > I traced this down a bit. The texindex program is created in the >texinfo package in LFS. After analyzing the source :), I narrowed it >down to: > >/* x.c */ >char *tempbase; >int main (int argc, char **argv) >{ > tempbase = mktemp ("txidxXXXXXX"); > return 0; >} > >gcc -o x x.c >./x >Segmentation fault > >Changing to mkstemp also creates a segfault. > >glibc declares mktemp as: >char * >mktemp (template) > char *template; >{ > if (__gen_tempname (template, __GT_NOCREATE) < 0) > /* We return the null string if we can't find a unique file name. */ > template[0] = '\0'; > > return template; >} > >The definition of __gen_tempname is in glibc sysdeps/posix/tempname.c. > >There is no change in this function from gcc-2.3.4. > >I suspect this is something to do with gcc4. Perhaps we need to elevate >this to the gcc devs with a bug. > >In the meantime, I'll try to see if I can extrace the source from >tempname.c and see if I can get it to segfault. > > -- Bruce > > char *tempbase; int main (int argc, char **argv) { char wtmp[] = "txidxXXXXXX"; tempbase = mktemp (wtmp); return 0; }
the program above doesnt segfault. information was from: http://lists.debian.org/debian-user/1999/10/msg02102.html "Using the brackets ("[]") here forces the allocation of an array big enough to hold the initializer value ("/tmp/tmpfileXXXXXX" with trailing NUL character). With the "char *" you're only allocating a pointer and telling it to point to a string constant (which is in read-only memory)." -- http://linuxfromscratch.org/mailman/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
