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

Reply via email to