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]> */

Reply via email to