Jason:
I have been watching this thread with interest.
Given that "my corrupted file can't be read by anything, it seems", it
occurs to me that may be the problem is in the filesystem's
representation of the file structure, rather than in the bytes of the file.
Or, since you mention that this file is hosted on a ZFS filesystem, and
I am only aware of ZFS filesystems in file servers rather than macOS
systems, maybe the problem is in the file-serving software running on
the server or a client on your mac. If the file is on a separate file
server, one thing to try is to get to a shell on that computer, and
examine the underlying file. Can tools on the server read the file's
contents? What are the contents there?
I had baffling problems with apparent file corruption of a file written
to a ZFS Fileserver on a TrueNAS Core OS (based on BSD) connected by
SMB. The problem turned out to be that the file name on the server file
system was so long that the server's or client's SMB code couldn't
handle it. For some reason, other software on my mac had been able to
write the file, with a long name, to that same filesystem. Weird. My fix
was to use the server's shell to shorten the filename. Then all was well
on the mac side. I don't claim that this is your problem, just that
there are a class of baffling problems that have symptoms of corrupt
file contents but are actually caused by file system misbehaviour.
I hope this gives you a helpful lead. Best regards,
—Jim DeLaHunt
On 2025-12-25 14:44, Jason Liu wrote:
Here's what happens:
catalina-vm% cmp -lb portlist.tcl
/opt/local/libexec/macports/lib/portlist1.0/portlist.tcl
cmp: /opt/local/libexec/macports/lib/portlist1.0/portlist.tcl: Illegal
byte sequence
It looks like the file on my system is hosed to the point where it's
not even recognized as a text file anymore. I can't read the file
using vi either, vi shows an empty buffer with the message:
"portlist.tcl" [readonly][READ ERRORS] 0L, 0B
Interestingly, both the file downloaded from GitHub and the
corrupted one on my system are both exactly 10,041 bytes in size.
There's no way to checksum the files though, since my corrupted file
can't be read by anything, it seems:
catalina-vm% openssl dgst -sha256
/opt/local/libexec/macports/lib/portlist1.0/portlist.tcl
Read error in /opt/local/libexec/macports/lib/portlist1.0/portlist.tcl
C09D841001000000:error:8000005C:system library:file_read:Illegal byte
sequence:crypto/bio/bss_file.c:148:calling fread()
C09D841001000000:error:10080002:BIO routines:file_read:system
lib:crypto/bio/bss_file.c:150:
--
Jason Liu
On Thu, Dec 25, 2025 at 3:34 PM Joshua Root <[email protected]> wrote:
Diffing your portlist.tcl with a fresh copy downloaded from
<https://github.com/macports/macports-base/blob/v2.11.6/src/portlist1.0/portlist.tcl>
will show you exactly what has changed at least, which may give some
further clue.
- Josh
On 26/12/2025 03:22, Jason Liu wrote:
> That's a good point. In fact, the modification timestamp on
portlist.tcl
> is 2025-10-29 05:01, which would seem to indicate that the file
hasn't
> been touched for the past couple of months.
>
> The "illegal byte sequence" error does point to file corruption,
but the
> mystery is how that might have occurred. I did also check the
ZFS volume
> where the virtual disk for my MacPorts development VM is stored,
and
> none of the the weekly scrubs have repaired any bits, nor has any
> resilvering been performed, which are typically early indicators
that a
> drive might be failing.
>
> --
> Jason Liu
>
>
> On Wed, Dec 24, 2025 at 9:06 PM Ryan Carsten Schmidt
> <[email protected] <mailto:[email protected]>> wrote:
>
> On Dec 24, 2025, at 18:49, Jason Liu wrote:
>>
>>
>>
>> portlist.tcl is a text file, not created by clang, and
Jason
>> didn't mention running selfupdate so there's no reason why
>> that file should have been changed.
>>
>>
>> Sorry, I forgot to mention that. This did, in fact, occur
after a
>> selfupdate. I have my MacPorts development VMs run a selfupdate
>> every night around 5:00am-ish.
>
> Ok but unless that selfupdate resulted in MacPorts base being
> updated, that file wouldn't have been touched.
>
> And if you run selfupdate daily then you'd have updated to the
> latest version 2.11.6 weeks ago when it was released.
>