ged / ruby-pg

A PostgreSQL client library for Ruby
Other
796 stars 180 forks source link

fat binary gem for Linux #551

Open larskanis opened 12 months ago

larskanis commented 12 months ago

Solves #480

larskanis commented 6 months ago

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==