Say, is it possible that your VACUUM problem is a locale-related bug?
If init runs with a different locale setting than hand-started
processes, then that would affect index ordering ... which could
perhaps cause fatal problems while vacuuming indexes. I could
believe that VACUUM is not able to cope with indexes that appear
to be out of order according to the sort operators it's using.
This line of thought leads to the idea that indexes had better be
marked explicitly with the locale that they're for. Or else we
need to change Postgres so that the locale setting is hard-wired
at compile time and not dependent on environment variables.
regards, tom lane