1> 1.7 is a development branch and is advertised as not suitable for production networks (yet mainly is) We also advertise that as a devel branch there will be bugs.
We use modules that are only available for 1.7, and the modularised core allows a lot more customization of which features are and aren't available for users. 1.6 hasn't updated for almost 2 years, and is lacking a lot of the fixes/additions of 1.7.
2> You should have tried out everything on a TestNet first before rolling it out to your production network. Channel registration is a commonly used feature so I doubt you tested .22 first at all. The ChangeLog was substantial and that should also have been a red flag to test first.
It was tested, but on a different box, everything works fine there, no segfaults with channel registration or getpass. The box it was tested on runs Gentoo, production box is CentOS, gcc version and stuff are the same though.
3> Roll back to 1.7.21 on you production net and leave 1.7.22 on your TestNet. If for no other reason than to get your channel registration back.
I would rather not go back, .22 is a 'recommended' update, and fixes memory leaks and a crashbug (the reason we considered to upgrade at all was the massive list of fixes in the changelog). Although it would get channel registration back, it would also be open to more abuse than .22.
I'll run some test on other ircds on the network and see if I can temporarely move the services there if that fixes it.
Or I can try downgrading just cs_register and ns_getpass.