I'm completely out of ideas.
I've been developing a server for some time now based loosely on the ble_app_hrs sample using the 5.2.1 SD. Things have been going reasonably well. Things began to get weird when I attempted to add my own IRQ handlers & found multiple examples of how to do this, based on whether one is or is not using the SD. FWIW, I've not yet discovered a good guide to these very different approaches. Whatever, I did receive some guidance here & my interrupt seemed to be working.
Today I removed all of that for other reasons. I also removed all references to simulated sensors.
All I have left are the app timers exactly like the ble_app_hrs sample. Now suddenly I'm getting a hardlock on sd_ble_gatts_value_set() within ble_bas_battery_level_update().
Obviously I've compared my current & previous source files. I don't see anything weird. I've read the other question about the hardlock related to sd_ble_gatts_value_set(). I do have app_gpiote.c included but don't see how that could be a factor.
Any suggestions?