> I didn't manage to get to the bottom of which piece of software
was causing the problem.

Sorry, it is both jack_rec and jack_capture.
Both use libsndfile, and neither should behave differently
when running on a 32 bit OS.

>From the POV of libsndfile, it has had Large File Support (which 
makes file offsets 64 bit signed values) on 32 bit systems for over
a decade.

J.C: Could it be that your libsndfile is that old?

> However, it is possible for other software using libsndfile incorrectly
> (ie using a 32 bit integer to store file offsets) to cause this sort
> of a problem, but then I would expect it to go wrong on 64 bit systems
> because `int` is 32 bits there too. However on 32 bit Linux systems,
> `long` whereas it us 64 bits on 64 bit Linux systems.

Yes, but neither jack_rec or jack_capture uses long for this (jack_capture
uses int64_t), and jack_rec doesn't even use a counter, it just writes and writes
until it stops. jack_capture has a counter, but that counter is only used when writing
wav files, and only used to keep track of when to start writing on a new file when reaching
the 4GB barrier.