Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fat binary gem for Linux #551

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

larskanis
Copy link
Collaborator

@larskanis larskanis commented Oct 30, 2023

Solves #480

@larskanis larskanis force-pushed the binary-linux branch 8 times, most recently from f69a294 to 97fe9b0 Compare November 3, 2023 10:10
@larskanis larskanis force-pushed the binary-linux branch 2 times, most recently from 49e89b9 to fb30680 Compare November 24, 2023 11:52
@larskanis larskanis force-pushed the binary-linux branch 2 times, most recently from 2877b2c to f558d96 Compare April 8, 2024 18:47
@larskanis
Copy link
Collaborator Author

larskanis commented Apr 8, 2024

This PR currently fails with a segfault on my local machine when connecting by a TLS encrypted connection like so:

$ valgrind ruby -rpg -e "PG.connect host:'localhost'"
==513704== Invalid write of size 8
==513704==    at 0x2285E800: pgtls_close (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2285799F: pqsecure_close (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2283E7B2: pqDropConnection (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x228423E0: PQconnectPoll (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2277A7EE: ??? (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x4AC5FB7: rb_nogvl (thread.c:1530)
==513704==    by 0x2277AD2D: gvl_PQconnectPoll (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x227833F5: ??? (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x4B18FC3: vm_call_cfunc_with_frame_ (vm_insnhelper.c:3490)
==513704==    by 0x4B1A3AA: vm_call_symbol (vm_insnhelper.c:3953)
==513704==    by 0x4AFD436: vm_sendish (vm_insnhelper.c:5581)
==513704==    by 0x4AFD436: vm_exec_core (insns.def:834)
==513704==    by 0x4AF9CDC: rb_vm_exec (vm.c:2486)
==513704==  Address 0x222d9f60 is 1,008 bytes inside a block of size 1,192 free'd
==513704==    at 0x484810F: free (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==513704==    by 0x22A86323: CRYPTO_free (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x22A121B8: sock_free (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x22A05F2F: BIO_free (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x22A0791F: BIO_free_all (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2295A79D: ossl_ssl_connection_free (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2295A249: SSL_free (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2285E7FB: pgtls_close (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2285799F: pqsecure_close (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2283E7B2: pqDropConnection (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x228423E0: PQconnectPoll (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2277A7EE: ??? (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==  Block was alloc'd at
==513704==    at 0x4845828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==513704==    by 0x228443E6: makeEmptyPGconn (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2283EE00: PQconnectStart (in /home/lars/comcard/ruby-pg/ports/x86_64-linux-gnu/lib/libpq.so.5.16)
==513704==    by 0x2277A7CB: ??? (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x4AC5FB7: rb_nogvl (thread.c:1530)
==513704==    by 0x2277ACD5: gvl_PQconnectStart (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x22780B76: ??? (in /home/lars/.rvm/gems/ruby-3.3.0/gems/pg-1.5.4-x86_64-linux-gnu/lib/3.3/pg_ext.so)
==513704==    by 0x4B18FC3: vm_call_cfunc_with_frame_ (vm_insnhelper.c:3490)
==513704==    by 0x4AFD436: vm_sendish (vm_insnhelper.c:5581)
==513704==    by 0x4AFD436: vm_exec_core (insns.def:834)
==513704==    by 0x4AF9CDC: rb_vm_exec (vm.c:2486)
==513704==    by 0x4968A52: rb_ec_exec_node (eval.c:287)
==513704==    by 0x4968A52: ruby_run_node (???:328)
==513704==    by 0x109204: rb_main (main.c:39)
==513704==    by 0x109204: main (main.c:58)
==513704== 

- Rename rake task 'gem:windows' to 'gem:native'
- Add `rake gem:native:x86_64-linux`
- Replace own PostgreSQL and OpenSSL build tasks by MiniPortile
  This is a more standard way and allows easier extensions.
- Add krb5 library for Linux target to support GSSAPI/Kerberos
- Change loading of pg_ext
  Try lib/pg_ext in addition to lib/3.2/pg_ext to support `rake spec` in the build directory
- Fat binary linux gem: Try different UnixSocket paths of different distros.
- CI: Adjust binary tests for new cross build target
- Change patch directory to ports/patches/<package>/<version>/*.patch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant