Ugh, I was grooving along with a solution for my vector merging when suddenly a ordinary-working query threw the most bizarre error:
ERROR: could not open file “base/16384/24738_fsm”: Invalid argument
Googling around was useless, but I managed to get some help on IRC from anders and RhodiumToad on #postgres. Long story short, our guess is a call to free() is following a call to open(), and the free() is clobbering errno before Postgres checks on the errno from open(). Good ol’ C error reporting, have to love it :-(
It’s submitted as Postgres bug #8167. Lots of details at https://gist.github.com/NelsonMinar/5588719
This is the first time I’ve used dtruss in anger. Worked nicely. In my psql repl I did “select pg_backend_pid();” to find the PID, then did “dtruss -p > /tmp/out 2>&1” to capture the output.