#1695: Segmentation fault when calling .finish on unopend postgres connection
---------------------+------------------------------------------------------
Reporter: moritz | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: library | Version: 2.5.0
Severity: medium | Keywords:
Lang: | Patch:
Platform: |
---------------------+------------------------------------------------------
{{{
.HLL 'perl6'
.sub main :main
load_bytecode 'Pg.pir'
$P0 = new 'Pg'
$P1 = $P0.'connectdb'('username=fantasy password=values')
$I0 = $P1.'status'()
say $I0
$P1.'finish'()
.end
}}}
The fantasy connection parameters cause the connect to fail, and then
calling the finish method results in hilarity:
{{{
(gdb) run foo.pir
Starting program: /nocrypt-
home/moritz/source/rakudo/parrot_install/bin/parrot foo.pir
[Thread debugging using libthread_db enabled]
warning: Lowest section in /usr/lib/libicudata.so.36 is .hash at
0000000000000120
[New Thread 0x7fe533a146f0 (LWP 8529)]
12319936
*** glibc detected *** /nocrypt-
home/moritz/source/rakudo/parrot_install/bin/parrot: free(): invalid
pointer: 0x0000000000c54958 ***
======= Backtrace: =========
/lib/libc.so.6[0x7fe5315039a8]
/lib/libc.so.6(cfree+0x76)[0x7fe531505ab6]
/lib/libc.so.6(freeaddrinfo+0x28)[0x7fe531547f88]
/usr/lib/libpq.so[0x7fe530b119bd]
/usr/lib/libpq.so(PQfinish+0xe)[0x7fe530b11b3e]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0[0x7fe5334bbd48]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0[0x7fe5334f92c1]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0[0x7fe5334d5931]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0[0x7fe5334d4ead]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0[0x7fe5334ac45c]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0(Parrot_pcc_invoke_from_sig_object+0x101)[0x7fe5334a83a1]
/home/moritz/rakudo/parrot_install/lib/libparrot.so.2.5.0(Parrot_pcc_invoke_sub_from_c_args+0xeb)[0x7fe5334a849b]
/nocrypt-home/moritz/source/rakudo/parrot_install/bin/parrot[0x40185e]
/lib/libc.so.6(__libc_start_main+0xe6)[0x7fe5314ae1a6]
/nocrypt-home/moritz/source/rakudo/parrot_install/bin/parrot[0x4011c9]
======= Memory map: ========
00400000-00409000 r-xp 00000000 08:07 10078770
/nocrypt-home/moritz/source/rakudo/parrot_install/bin/parrot
00609000-0060a000 rw-p 00009000 08:07 10078770
/nocrypt-home/moritz/source/rakudo/parrot_install/bin/parrot
00b25000-00c9d000 rw-p 00000000 00:00 0
[heap]
7fe528000000-7fe528021000 rw-p 00000000 00:00 0
7fe528021000-7fe52c000000 ---p 00000000 00:00 0
7fe52e654000-7fe52e6b9000 r-xp 00000000 08:01 398415
/usr/lib/libgcrypt.so.11.4.4
7fe52e6b9000-7fe52e8b8000 ---p 00065000 08:01 398415
/usr/lib/libgcrypt.so.11.4.4
7fe52e8b8000-7fe52e8bb000 rw-p 00064000 08:01 398415
/usr/lib/libgcrypt.so.11.4.4
7fe52e8bb000-7fe52e8ca000 r-xp 00000000 08:01 398445
/usr/lib/libtasn1.so.3.0.15
7fe52e8ca000-7fe52eaca000 ---p 0000f000 08:01 398445
/usr/lib/libtasn1.so.3.0.15
7fe52eaca000-7fe52eacb000 rw-p 0000f000 08:01 398445
/usr/lib/libtasn1.so.3.0.15
7fe52eacb000-7fe52eb72000 r-xp 00000000 08:01 402186
/usr/lib/libgnutls.so.26.4.6
7fe52eb72000-7fe52ed72000 ---p 000a7000 08:01 402186
/usr/lib/libgnutls.so.26.4.6
7fe52ed72000-7fe52ed7d000 rw-p 000a7000 08:01 402186
/usr/lib/libgnutls.so.26.4.6
7fe52ed7d000-7fe52ed96000 r-xp 00000000 08:01 397607
/usr/lib/libsasl2.so.2.0.22
7fe52ed96000-7fe52ef96000 ---p 00019000 08:01 397607
/usr/lib/libsasl2.so.2.0.22
7fe52ef96000-7fe52ef97000 rw-p 00019000 08:01 397607
/usr/lib/libsasl2.so.2.0.22
7fe52ef97000-7fe52efa5000 r-xp 00000000 08:01 398439
/usr/lib/liblber-2.4.so.2.1.0
7fe52efa5000-7fe52f1a5000 ---p 0000e000 08:01 398439
/usr/lib/liblber-2.4.so.2.1.0
7fe52f1a5000-7fe52f1a6000 rw-p 0000e000 08:01 398439
/usr/lib/liblber-2.4.so.2.1.0
7fe52f1a6000-7fe52f1b6000 r-xp 00000000 08:01 413433
/lib/libresolv-2.7.so
7fe52f1b6000-7fe52f3b6000 ---p 00010000 08:01 413433
/lib/libresolv-2.7.so
7fe52f3b6000-7fe52f3b8000 rw-p 00010000 08:01 413433
/lib/libresolv-2.7.so
7fe52f3b8000-7fe52f3ba000 rw-p 00000000 00:00 0
7fe52f3ba000-7fe52f3bc000 r-xp 00000000 08:01 413691
/lib/libkeyutils-1.2.so
7fe52f3bc000-7fe52f5bb000 ---p 00002000 08:01 413691
/lib/libkeyutils-1.2.so
7fe52f5bb000-7fe52f5bc000 rw-p 00001000 08:01 413691
/lib/libkeyutils-1.2.so
7fe52f5bc000-7fe52f5c3000 r-xp 00000000 08:01 396932
/usr/lib/libkrb5support.so.0.1
7fe52f5c3000-7fe52f7c3000 ---p 00007000 08:01 396932
/usr/lib/libkrb5support.so.0.1
7fe52f7c3000-7fe52f7c4000 rw-p 00007000 08:01 396932
/usr/lib/libkrb5support.so.0.1
7fe52f7c4000-7fe52f7e8000 r-xp 00000000 08:01 397242
/usr/lib/libk5crypto.so.3.1
7fe52f7e8000-7fe52f9e8000 ---p 00024000 08:01 397242
/usr/lib/libk5crypto.so.3.1
7fe52f9e8000-7fe52f9ea000 rw-p 00024000 08:01 397242
/usr/lib/libk5crypto.so.3.1
7fe52f9ea000-7fe52fa00000 r-xp 00000000 08:01 397696
/usr/lib/libz.so.1.2.3.3
7fe52fa00000-7fe52fc00000 ---p 00016000 08:01 397696
/usr/lib/libz.so.1.2.3.3
7fe52fc00000-7fe52fc01000 rw-p 00016000 08:01 397696
/usr/lib/libz.so.1.2.3.3
7fe52fc01000-7fe52fc46000 r-xp 00000000 08:01 402194
/usr/lib/libldap_r-2.4.so.2.1.0
7fe52fc46000-7fe52fe45000 ---p 00045000 08:01 402194
/usr/lib/libldap_r-2.4.so.2.1.0
7fe52fe45000-7fe52fe48000 rw-p 00044000 08:01 402194
/usr/lib/libldap_r-2.4.so.2.1.0
7fe52fe48000-7fe52fe4a000 rw-p 00000000 00:00 0
7fe52fe4a000-7fe52fe75000 r-xp 00000000 08:01 396916
/usr/lib/libgssapi_krb5.so.2.2
7fe52fe75000-7fe530074000 ---p 0002b000 08:01 396916
/usr/lib/libgssapi_krb5.so.2.2
7fe530074000-7fe530076000 rw-p 0002a000 08:01 396916
/usr/lib/libgssapi_krb5.so.2.2
7fe530076000-7fe530079000 r-xp 00000000 08:01 411320
/lib/libcom_err.so.2.1
7fe530079000-7fe530278000 ---p 00003000 08:01 411320
/lib/libcom_err.so.2.1
7fe530278000-7fe530279000 rw-p 00002000 08:01 411320
/li
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fe533a146f0 (LWP 8529)]
0x00007fe5314c1ed5 in raise () from /lib/libc.so.6
}}}
{{{
(gdb) bt
#0 0x00007fe5314c1ed5 in raise () from /lib/libc.so.6
#1 0x00007fe5314c33f3 in abort () from /lib/libc.so.6
#2 0x00007fe5314fe408 in ?? () from /lib/libc.so.6
#3 0x00007fe5315039a8 in ?? () from /lib/libc.so.6
#4 0x00007fe531505ab6 in free () from /lib/libc.so.6
#5 0x00007fe531547f88 in freeaddrinfo () from /lib/libc.so.6
#6 0x00007fe530b119bd in ?? () from /usr/lib/libpq.so
#7 0x00007fe530b11b3e in PQfinish () from /usr/lib/libpq.so
#8 0x00007fe5334bbd48 in pcf_v_p (interp=0xb25080, nci=<value optimized
out>, self_unused=<value optimized out>)
at src/nci/extra_thunks.c:375
#9 0x00007fe5334f92c1 in Parrot_NCI_invoke (interp=0xb25080,
_self=0xc69e00, next=0xc82650) at ./src/pmc/nci.pmc:379
#10 0x00007fe5334d5931 in runops_slow_core (interp=0xb25080,
runcore_unused=<value optimized out>, pc=0xc82640)
at src/runcore/cores.c:647
#11 0x00007fe5334d4ead in runops_int (interp=0xb25080, offset=0) at
src/runcore/main.c:237
#12 0x00007fe5334ac45c in runops (interp=0xb25080, offs=<value optimized
out>) at src/call/ops.c:127
#13 0x00007fe5334a83a1 in Parrot_pcc_invoke_from_sig_object
(interp=0xb25080, sub_obj=0xbb6520, call_object=<value optimized out>)
at src/call/pcc.c:366
#14 0x00007fe5334a849b in Parrot_pcc_invoke_sub_from_c_args
(interp=0xb25080, sub_obj=0xbb6520, sig=<value optimized out>)
at src/call/pcc.c:87
#15 0x000000000040185e in main (argc=1, argv=0x7fffe5973048) at
src/main.c:149
}}}
--
Ticket URL: <https://trac.parrot.org/parrot/ticket/1695>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets