In CVS tip, create an empty database.  pg_dump it.  Try to restore the
dump.  The first thing it does is
REVOKE ALL ON SCHEMA public FROM PUBLIC;
which fails with
ERROR:  dependent privileges exist (use CASCADE to revoke them too)
This message seems incorrect --- what is a dependent privilege, and
why would PUBLIC have any?  All I see in pg_namespace is
public             |        1 | {=UC/postgres}
Also, pg_dump itself seems confused --- the full text of a dump from
an empty DB is (omitting comment lines)
\connect - postgres
REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT ALL ON SCHEMA public TO PUBLIC;
GRANT ALL ON SCHEMA public TO PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
which is not only inefficient but wrong, since public surely should
have privileges when the dust settles.
        regards, tom lane