[Bug 213092] tar(1) continues to run and error after non-existent file

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Thu Sep 29 16:05:35 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213092

            Bug ID: 213092
           Summary: tar(1) continues to run and error after non-existent
                    file
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: sega01 at go-beyond.org
                CC: freebsd-amd64 at FreeBSD.org
                CC: freebsd-amd64 at FreeBSD.org

I suspect this fix is what caused the behavior:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205358

Prior, I was using the broken functionality as a feature:

tar -cf - file file file-may-be-here file file, and it was fine up till 10.3.

Now in 11.0-RELEASE, it breaks. But it's ugly.

# ls
foo     that    this
# tar cvf - 404 > /dev/null
tar: 404: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors.
# echo $?
1

That's all fine and dandy. I think it could be reasonable behavior. What I
don't like is this.

# tar cvf - foo that this 404 that this 404 that this > /dev/null
a foo
a foo/bar
a that
a this
tar: 404: Cannot stat: No such file or directory
tar: INTERNAL ERROR: Function 'archive_read_disk_open' invoked with archive
structure in state 'header', should be in state 'new/closed': Unknown error: -1
tar: INTERNAL ERROR: Function 'archive_read_disk_open' invoked with archive
structure in state 'header', should be in state 'new/closed': Unknown error: -1
tar: INTERNAL ERROR: Function 'archive_read_disk_open' invoked with archive
structure in state 'header', should be in state 'new/closed': Unknown error: -1
tar: INTERNAL ERROR: Function 'archive_read_disk_open' invoked with archive
structure in state 'header', should be in state 'new/closed': Unknown error: -1
tar: INTERNAL ERROR: Function 'archive_read_disk_open' invoked with archive
structure in state 'header', should be in state 'new/closed': Unknown error: -1
tar: Error exit delayed from previous errors.
# echo $?
1

It at least returns 1, but it doesn't stop execution. It seems to get into a
pretty yucky state. I think maybe tar isn't handling the return from libarchive
properly? I think tar should quit immediately on a failure like this, rather
than spinning its wheels in a weird state.

In order to see the libarchive error, you have to give tar at least one more
file argument after a file that doesn't exist.

Thank you!

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the freebsd-amd64 mailing list