Thread
-
pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
tushar <tushar.ahuja@enterprisedb.com> — 2025-12-08T17:53:53Z
Hi, I found a scenario where, after firing the wrong way of using the pg_dump command, not only server fail to start, But later, I am not able to perform initdb/pg_ctl as well Please refer to this testcase: " PG v19 devel, Cluster running on default port=5432 Run pg_dump (./pg_dump -Ft -s -c -v -f postgres schema_clean.tar1) " The result is : edb@1a1c15437e7c bin]$ ./pg_dump -Ft -s -c -v -f postgres schema_clean.tar1 qemu: uncaught target signal 7 (Bus error) - core dumped qemu-x86_64:qemu-x86_64:qemu-x86_64: QEMU internal SIGBUS {code=ADRERR, addr=0x8c6b70}QEMU internal SIGBUS {code=ADRERR, addr=0x8c6b70} QEMU internal SIGBUS {code=ADRERR, addr=0x8c6b70} qemu-x86_64:qemu-x86_64: QEMU internal SIGBUS {code=ADRERR, addr=0xa7cee0} QEMU internal SIGBUS {code=ADRERR, addr=0xa7cee0} qemu-x86_64: QEMU internal SIGBUS {code=ADRERR, addr=0xa7cee0} qemu-x86_64:qemu-x86_64: QEMU internal SIGBUS {code=ADRERR, addr=0xa7cee0} QEMU internal SIGBUS {code=ADRERR, addr=0xa7cee0} pg_dump: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The correct way is to use ./pg_dump -Ft -s -c -v -f schema_clean.tar1 postgres Is there any way we can generate some error messages? regards, -
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Nathan Bossart <nathandbossart@gmail.com> — 2025-12-08T18:20:04Z
On Mon, Dec 08, 2025 at 11:23:53PM +0530, tushar wrote: > I found a scenario where, after firing the wrong way of using the pg_dump > command, not only server fail to start, > But later, I am not able to perform initdb/pg_ctl as well > > Please refer to this testcase: > " > PG v19 devel, Cluster running on default port=5432 > Run pg_dump (./pg_dump -Ft -s -c -v -f postgres schema_clean.tar1) > " IIUC the problem is that you are overwriting the postgres binary. Is that correct? > Is there any way we can generate some error messages? Perhaps it'd be worth making pg_dump a little more cautious about overwriting existing files (or at least have the option to avoid that). -- nathan
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Tom Lane <tgl@sss.pgh.pa.us> — 2025-12-08T18:20:13Z
tushar <tushar.ahuja@enterprisedb.com> writes: > I found a scenario where, after firing the wrong way of using the pg_dump > command, not only server fail to start, > But later, I am not able to perform initdb/pg_ctl as well > The result is : > edb@1a1c15437e7c bin]$ ./pg_dump -Ft -s -c -v -f postgres schema_clean.tar1 > qemu: uncaught target signal 7 (Bus error) - core dumped I think what you are showing here is that you ran this command in the installation's bin directory, and where you write "-f postgres", that caused pg_dump to overwrite the postgres executable. > Is there any way we can generate some error messages? Don't do that. Generally speaking, you don't want installed files to be writable at all by ordinary user accounts ... but if they are, for heaven's sake don't cd into those directories before doing work. You're just setting yourself up for trouble. regards, tom lane
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Tom Lane <tgl@sss.pgh.pa.us> — 2025-12-08T18:22:48Z
Nathan Bossart <nathandbossart@gmail.com> writes: > On Mon, Dec 08, 2025 at 11:23:53PM +0530, tushar wrote: >> Is there any way we can generate some error messages? > Perhaps it'd be worth making pg_dump a little more cautious about > overwriting existing files (or at least have the option to avoid that). I think we'd get way more brickbats than kudos for that. regards, tom lane
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Nathan Bossart <nathandbossart@gmail.com> — 2025-12-08T18:23:28Z
On Mon, Dec 08, 2025 at 01:20:13PM -0500, Tom Lane wrote: > Don't do that. Generally speaking, you don't want installed files to > be writable at all by ordinary user accounts ... but if they are, > for heaven's sake don't cd into those directories before doing work. > You're just setting yourself up for trouble. Yeah, I got a permission error when I tried this: /usr/local/pgsql/bin$ ./pg_dump -Ft -s -c -v -f postgres schema_clean.tar1 pg_dump: error: could not open TOC file "postgres" for output: Permission denied So you'd have to either make the binary writable or use "sudo" or something to get in this situation, which is hopefully uncommon. -- nathan
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Nathan Bossart <nathandbossart@gmail.com> — 2025-12-08T18:25:16Z
On Mon, Dec 08, 2025 at 01:22:48PM -0500, Tom Lane wrote: > Nathan Bossart <nathandbossart@gmail.com> writes: >> On Mon, Dec 08, 2025 at 11:23:53PM +0530, tushar wrote: >>> Is there any way we can generate some error messages? > >> Perhaps it'd be worth making pg_dump a little more cautious about >> overwriting existing files (or at least have the option to avoid that). > > I think we'd get way more brickbats than kudos for that. Yeah, I'm afraid you're right. We'd probably have to turn it on by default to do any real amount of good, and there's undoubtedly someone depending on the current behavior. -- nathan
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
tushar <tushar.ahuja@enterprisedb.com> — 2025-12-09T05:32:51Z
On Mon, Dec 8, 2025 at 11:50 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > tushar <tushar.ahuja@enterprisedb.com> writes: > > I found a scenario where, after firing the wrong way of using the > pg_dump > > command, not only server fail to start, > > But later, I am not able to perform initdb/pg_ctl as well > > > The result is : > > edb@1a1c15437e7c bin]$ ./pg_dump -Ft -s -c -v -f postgres > schema_clean.tar1 > > qemu: uncaught target signal 7 (Bus error) - core dumped > > I think what you are showing here is that you ran this command in the > installation's bin directory, and where you write "-f postgres", > that caused pg_dump to overwrite the postgres executable. > > > Is there any way we can generate some error messages? > > Don't do that. Generally speaking, you don't want installed files to > be writable at all by ordinary user accounts ... but if they are, > for heaven's sake don't cd into those directories before doing work. > You're just setting yourself up for trouble. > > right, that was unintentional 😊, Instead of "postgres", if i give any other name , i am getting an error e,g [edb@1a1c15437e7c bin]$ ./pg_dump -Ft -s -c -v -f abc123 schema_clean.tar1 pg_dump: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database "schema_clean.tar1" does not exist So this query is a failed query and now if i give 'postgres' instead of 'abc123', Am I not supposed to get the same error , instead of pg_dump overwriting the postgres executable. regards,
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Tom Lane <tgl@sss.pgh.pa.us> — 2025-12-09T05:42:00Z
tushar <tushar.ahuja@enterprisedb.com> writes: > So this query is a failed query and now if i give 'postgres' instead of > 'abc123', Am I not supposed to get the same error , instead of > pg_dump overwriting the postgres executable. No. You are supposed to be someone who knows better --- and if you don't, you should not be running with write privileges on those files. pg_dump has absolutely no way to know that that particular output file is something important. Even if we tried to put that knowledge into it, there are tiny variations of this case that would still break, such as ./pg_dump ... >postgres or for that matter echo oops >postgres There is no point in trying to prevent pg_dump from overwriting a postgres executable when there are thousands of other ways to do that, if you're foolish enough to not be more careful with file permissions. regards, tom lane
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
tushar <tushar.ahuja@enterprisedb.com> — 2025-12-09T05:53:03Z
On Tue, Dec 9, 2025 at 11:12 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > There is no point in trying to prevent pg_dump from overwriting a > postgres executable when there are thousands of other ways to do > that, if you're foolish enough to not be more careful with file > permissions. > > right. The responsibility for file caution and proper permissions rests with the user. regards,
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
David G. Johnston <david.g.johnston@gmail.com> — 2025-12-09T06:22:15Z
On Monday, December 8, 2025, tushar <tushar.ahuja@enterprisedb.com> wrote: > > > So this query is a failed query and now if i give 'postgres' instead of > 'abc123', Am I not supposed to get the same error , instead of > pg_dump overwriting the postgres executable. > The code chooses to initialize the archive first, then open the connection. In hindsight, maybe that wasn’t the most user-friendly choice; along with not having a “—clobber” option to overwrite an existing archive. So, no, the error you get depends on whether you managed to clobber the postgres service that is handling the connection attempt. Personally I’d be fine with fixing both behaviors and accept any pushback on making “—no-clobber” the new default; if someone were inclined to write the patch. It’s a failure mode that seems sufficiently rare to not deal with accommodating at this point though. David J.
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Srinath Reddy Sadipiralla <srinath2133@gmail.com> — 2025-12-09T16:27:08Z
Hi, This isn’t directly tied to the current thread, but it relates to the discussion about binaries and privileges.I have a question about the initdb success message to start the server using pg_ctl. Can we update the -l logfile suggestion it prints at the end to something like -l /path/to/datadirectory/logfile instead? Here’s the issue I’m seeing: when PostgreSQL is installed from packages rather than built from source, the installation requires root privileges (sudo). That means directories like bin and lib are owned by root, and non-superusers can’t create new files there. If someone runs initdb from inside the bin directory and then blindly copy-pastes the suggested pg_ctl command, pg_ctl will attempt to write the logfile into the bin directory. Since the user doesn’t have write permissions to that location, it fails. Would it make sense for the success message to recommend a path inside the data directory (or another writable location) instead of just -l logfile, which implies the current directory?, thoughts? -- Thanks, Srinath Reddy Sadipiralla EDB: https://www.enterprisedb.com/
-
Re: pg_dump:qemu: uncaught target signal 7 (Bus error) - core dumped
Tom Lane <tgl@sss.pgh.pa.us> — 2025-12-09T17:49:14Z
Srinath Reddy Sadipiralla <srinath2133@gmail.com> writes: > I have a question about the initdb success > message to start the server using pg_ctl. Can we update the -l logfile > suggestion it prints at the end to something like -l > /path/to/datadirectory/logfile instead? "-l logfile" should be read as a recommendation to write to some logfile, not as the literal text of the command. I don't think that putting the log file into the data directory is good practice, either. > Here’s the issue I’m seeing: when PostgreSQL is installed from packages > rather than built from source, the installation requires root privileges > (sudo). > That means directories like bin and lib are owned by root, and > non-superusers > can’t create new files there. > If someone runs initdb from inside the bin directory and then blindly > copy-pastes > the suggested pg_ctl command, pg_ctl will attempt to write the logfile into > the bin directory. All of this seems to be predicated on the idea that someone would cd into the bin directory and try to do work there. I don't understand why we should regard that scenario as sufficiently probable to justify contorting PG's behavior to make it fractionally less dangerous. regards, tom lane