mod_p hooks the post_config more than once, including really_last. mod_s's post_config has to run after mod_p's post_config (both of them) for one of its features to work. I tried adding "mod_p.c" to the predecessor list in mod_s, but it wasn't effective, as predecessor processing doesn't account for the possibility that the predecessor may have hooked more than once.
No claims here to understand all the hook sorting; I found some code that I was expecting, changed it, was happy, changed the LoadModule order, was still happy, but noted that there's some other, less obvious code that touches predecessors too (tsort()).
Any thoughts before I test in more detail?