Archive for April 15, 2025

Tuesday, April 15, 2025

dlsym Considered Harmful on iOS 18.4

Fabien Perigaud (tweet):

This time, we will dynamically resolve and use strcmp().

[…]

Instead of a nice log indicating that the two strings are not the same, our application crashed...

[…]

What just happened? Why is the pointer incorrectly signed? Why do I have a kernel pointer in PC?

[…]

A XPACI instruction is clearly missing here, we can see the return value (X0) from the BLRAAZ being directly converted to an offset by the SUB instruction. In iOS 18.3.2, the XPACI instruction is present.

[…]

Repeated tests showed that in contrast to the specification, the pointer was considered as a kernel one (during a signature operation) if the bit 63 is set!

Previously:

How Disk Images and VMs Are More Efficient

Howard Oakley:

What happens with an Apple silicon VM is a bit more complicated, and harder to observe. This time the virtualisation app should create the disk image inside the VM bundle as a sparse file to begin with, then copy into that what’s needed for the VM, so skipping the first mount stage and Trimming during the second mount.

The result is the same, though, with a 350 GB VM taking just 22 GB on disk. Inspect that disk image using my free utility Precize, and you’ll see that economy confirmed, and the Sparse File flag set.

He has a summary of the requirements for “plain read-write disk images and those inside VMs to be sparse files.”

Previously:

Git at 20

Taylor Blau:

Exactly twenty years ago, on April 7, 2005, Linus Torvalds made the very first commit to a new version control system called Git. Torvalds famously wrote Git in just 10 days after Linux kernel developers lost access to their proprietary tool, BitKeeper, due to licensing disagreements. In fact, in that first commit, he’d written enough of Git to use Git to make the commit!

Git’s unconventional and decentralized design—nowadays ubiquitous and seemingly obvious—was revolutionary at the time, and reshaped how software teams collaborate and develop. (To wit, GitHub!)

To celebrate two decades of Git, we sat down with Linus himself to revisit those early days, explore the key design decisions behind Git’s lasting success, and discuss how it forever changed software development.

At this point, I’ve now used Git for much longer than any previous version control system (Projector, RCS, CVS, VOODOO, Subversion). It’s worked really well. There are certainly valid complaints to be made about the command-line interface, but these days 99% of my interaction with Git is through Tower, anyway.

Scott Chacon (via Christina Warren, Hacker News):

I started using Git for something you might not imagine it was intended for, only a few months after it’s first commit. I then went on to cofound GitHub, write arguably the most widely read book on Git, build the official website of the project, start the annual developer conference, etc - this little project has changed the world of software development, but more personally, it has massively changed the course of my life.

I thought it would be fun today, as the Git project rolls into it’s third decade, to remember the earliest days of Git and explain a bit why I find this project so endlessly fascinating.

Patrick Steinhardt:

To mark the 20th anniversary of this important project that is nowadays used by almost every single developer, I interviewed Linus about the history of Git, why he handed over maintainership of Git, and what he considers to be its most important milestones.

Irreal:

There’s an argument to made that BitKeeper is the better solution and McVoy has made that argument in the past but BitKeeper was proprietary software in an age when developers pretty much insisted on open source tools. McVoy, to his credit, has accepted this and is devoting his time to fishing.

Whether or not Git is the best solution it has emerged as the default solution and that, I think, is a good thing. It’s definitely a good VCS and having a standardized VCS benefits us all. I have no doubt that its distributed nature is the correct answer and 20 years of Git and BitKeeper before it has proven that to be the case.

Previously: