I've been working on this bug for a few days now, and it seems that the root cause is likely how the ASF4 RTOS TWI Driver (doesn't) handle things.
In order to do a read from an I2C device with an internal address, you must first Write the Address, then Read the data, as two separate operations. The problem happens when there is a delay between the write operation and this line of the read operation:
hri_twi_write_CR_reg(dev->hw, TWI_CR_START | ((msg->len == 1) ? TWI_CR_STOP : 0));
If a delay occurs, the read operation fails to clock, which locks up the mutex, which puts the task in permanent suspension.
In my case the delay came in the form of a context switch happening right after the write operation.
I did notice that the listed version of the driver is "1", but I can't figure out where any sort of ASF4 changelog is posted to see if a newer version might exist that's fixed this.
Does anyone know WHY this delay causes the read to fail? I haven't found anything about it in the data sheet.