Closed mkab closed 2 years ago
So I think this may be due to pgbouncer 1.14 (the version currently used by this buildpack) not being fully compatible with OpenSSL 3.
In the release notes for pgbouncer 1.17 there is:
OpenSSL 3 support has been fixed. Previous releases would crash.
It looks like a previous attempt to upgrade the pgbouncer version to something newer (at the time, 1.15), was reverted (#152) due to issues being reported with 1.15 (#150).
However upgrading now seems unavoidable.
Perhaps we should just use 1.17 for Heroku-22 and leave the other stacks on 1.14 until the cause of #150 is understood? (It's also possible those issues have already been fixed in 1.16/1.17 too)
cc @beanieboi
I've also filed #165 since it's clear the CI for this repo isn't sufficient.
@edmorley thanks a lot for looking into it! What will you say is a viable solution for my case for the time being? Should I downgrade to Heroku-20? I reckon it's going to take some time to upgrade the pgbouncer version to 1.17.
Yeah I would stick with Heroku-20 for now, if you need to use the pgbouncer buildpack. Note there is now also server-side Postgres connection pooling available as an alternative to pgbouncer on the dyno (which if sufficient for your use-case would mean you can stop using the buildpack): https://devcenter.heroku.com/articles/postgres-connection-pooling
Ok, I will check it out. Thanks
Hello! We're getting the same issue,
2022-06-20T14:32:31.583746+00:00 app[worker.1]: buildpack=pgbouncer at=pgbouncer-enabled
2022-06-20T14:32:31.591861+00:00 app[worker.1]: buildpack=pgbouncer at=config-gen-start
2022-06-20T14:32:31.683888+00:00 app[worker.1]: Setting DATABASE_URL_PGBOUNCER config var
2022-06-20T14:32:31.713744+00:00 app[worker.1]: buildpack=pgbouncer at=config-gen-end
2022-06-20T14:32:31.714011+00:00 app[worker.1]: buildpack=pgbouncer at=config-gen-override DATABASE_URL
2022-06-20T14:32:31.732932+00:00 app[worker.1]: buildpack=pgbouncer at=pgbouncer-launched pid=45 signal=SIGINT
2022-06-20T14:32:31.733001+00:00 app[worker.1]: buildpack=pgbouncer at=pgbouncer-start
2022-06-20T14:32:31.733290+00:00 app[worker.1]: buildpack=pgbouncer at=app-launched pid=46
2022-06-20T14:32:31.735803+00:00 app[worker.1]: buildpack=pgbouncer at=app-start
2022-06-20T14:32:31.865047+00:00 app[worker.1]: 2022-06-20 14:32:31.864 UTC [47] LOG kernel file descriptor limit: 10000 (hard: 10000); max_client_conn: 100, max expected fd use: 114
2022-06-20T14:32:31.865837+00:00 app[worker.1]: 2022-06-20 14:32:31.865 UTC [47] LOG listening on 127.0.0.1:6000
2022-06-20T14:32:31.865946+00:00 app[worker.1]: 2022-06-20 14:32:31.865 UTC [47] LOG listening on unix:/tmp/.s.PGSQL.6000
2022-06-20T14:32:31.865987+00:00 app[worker.1]: 2022-06-20 14:32:31.865 UTC [47] LOG process up: PgBouncer 1.14.0, libevent 2.1.12-stable (epoll), adns: evdns2, tls: OpenSSL 3.0.2 15 Mar 2022
2022-06-20T14:32:32.518211+00:00 app[worker.1]: Horizon started successfully.
2022-06-20T14:32:36.138334+00:00 app[worker.1]: 2022-06-20 14:32:36.138 UTC [47] LOG C-0x564763140e80: db1/szulcubzosgfjh@127.0.0.1:47362 login attempt: db=db1 user=szulcubzosgfjh tls=no
2022-06-20T14:32:36.197520+00:00 app[worker.1]: 2022-06-20 14:32:36.197 UTC [47] LOG S-0x564763147c20: db1/szulcubzosgfjh@18.235.4.83:5432 new connection to server (from 172.19.62.2:49206)
2022-06-20T14:32:36.221317+00:00 app[worker.1]: bin/start-pgbouncer: line 100: 47 Segmentation fault "$@"
2022-06-20T14:32:36.221743+00:00 app[worker.1]: buildpack=pgbouncer at=exit process=pgbouncer
2022-06-20T14:32:36.222275+00:00 app[worker.1]: buildpack=pgbouncer at=pgbouncer-end
2022-06-20T14:32:36.259179+00:00 app[worker.1]: buildpack=pgbouncer at=kill-app pid=46
2022-06-20T14:32:36.260733+00:00 app[worker.1]: buildpack=pgbouncer at=wait-app pid=46
2022-06-20T14:32:36.264278+00:00 app[worker.1]: [2022-06-20 11:32:36][078e6e88-149e-47b9-859d-4fe3188a5f10] Processing: App\Jobs\Redirector\RecountNumberOfClicks
2022-06-20T14:32:36.264279+00:00 app[worker.1]: [2022-06-20 11:32:36][078e6e88-149e-47b9-859d-4fe3188a5f10] Failed: App\Jobs\Redirector\RecountNumberOfClicks
2022-06-20T14:32:36.320972+00:00 app[worker.1]: buildpack=pgbouncer at=app-end
2022-06-20T14:32:36.321294+00:00 app[worker.1]: buildpack=pgbouncer at=kill-aux name=pgbouncer pid=45 signal=SIGINT
2022-06-20T14:32:36.321354+00:00 app[worker.1]: bin/start-pgbouncer: line 62: kill: (45) - No such process
But it only happens with one of our apps, others are running fine.
I have a very weird error that I have been debugging for the past few days.
I have a Django app deployed on two environments on Heroku - development and staging. There's absolutely no difference between the two environments apart from the Heroku stack. The development environment uses heroku-stack-20 while staging uses heroku-stack-22. They both use the same python runtime environment - 3.10.5
I added the pgbouncer buildpack to both environments. It works on dev without problems but on staging, it fails with a segmentation fault.
Here's the complete stacktrace. It's a bit long.
TL;DR
Complete stacktrace:
Any ideas why this segmentation fault is happening?