On Thu, Aug 18, 2011 at 11:25, Kevin Brott <[email protected]> wrote:
> > On Thu, Aug 18, 2011 at 10:28, Paul Eggert <[email protected]> wrote: > >> On 08/18/2011 09:46 AM, Kevin Brott wrote: >> > Looks like tar isn't putting anything but zero-byte files into the >> archives >> >> Thanks for the truss output. I expect that it's this line >> in src/create.c:1639 >> >> else if (fstatat (parentfd, name, &st->stat, fstatat_flags) != 0) >> >> Could you please run a debugger like GDB and step through that line >> with an offending test case? My suspicion is that fstatat is incorrectly >> reporting that the file size is zero. If so, can you explain how fstatat >> is implemented on your system? Is the code using the gnulib replacement, >> or is fstatat implemented via system's C library, or what? >> >> If you can't run a debugger, simply insert some printf statements >> and print st->stat.st_size right after the successful fstatat. >> > > Working on that debugging (using the system native tools because there's no > working gcc for AIX 7.1 yet, and I'm not real familiar with adb or dbx) ... > but doing some quick reading I suspect the issue stems from this: > > "IBM AIX Version 7.1 Differences Guide" p7 > * > * > *Table 1-2 Short list of new library functions and system calls > * > *System calls System calls* > *acessxat mknodat* > *chownxat openat* > *faccessat openxat* > *fchmodat readlinkat* > *fchownat renameat* > *fexecve stat64at* > *fstatat statx64at* > *futimens statxat* > *kopenat symlinkat* > *linkat ulinkat* > *mkdirat utimensat* > *mkfifoat* > > Which implies that fstatat wasn't available in earlier versions of AIX - > but is now in 7.1 - which might end up just being a ./configure issue. The > official reference for it seems to be here: > http://publib.boulder.ibm.com/infocenter/aix/v7r1/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf2/statx.htm > > AIX dbx is not being my friend today. I'm not finding the data I think you're looking for. And my c-foo is apparently weak-sauce, as putting a simple printf in create.c resulted in a src/tar that segfaults. Any chance you could pass a short .diff this way for create.c that would result in the data dump you want? -- # include <stddisclaimer.h> /* Kevin Brott <[email protected]> */
