Opened 4 months ago

Closed 4 months ago

Last modified 4 months ago

#5741 closed defect (invalid)

Crash on PostgreSQL backend exit upon libproj22 cleanup

Reported by: strk Owned by: pramsey
Priority: medium Milestone: PostGIS 3.4.3
Component: postgis Version: 3.4.x
Keywords: Cc:

Description

I get this crash on exit with PostGIS-3.4.2 as packaged by PGDG:

Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (no_tid=0, signo=6, threadid=140331537820224) at ./nptl/pthread_kill.c:44
44      ./nptl/pthread_kill.c: No such file or directory.
(gdb) bt
#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140331537820224) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=140331537820224) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=140331537820224, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007fa17e07b476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007fa17e0617f3 in __GI_abort () at ./stdlib/abort.c:79
#5  0x00007fa17e0c2676 in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7fa17e214b77 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#6  0x00007fa17e0d9cfc in malloc_printerr (str=str@entry=0x7fa17e212744 "free(): invalid pointer") at ./malloc/malloc.c:5664
#7  0x00007fa17e0dba44 in _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at ./malloc/malloc.c:4439
#8  0x00007fa17e0de453 in __GI___libc_free (mem=<optimized out>) at ./malloc/malloc.c:3391
#9  0x00007fa0f14fa4a7 in osgeo::proj::common::DateTime::~DateTime() () from /lib/x86_64-linux-gnu/libproj.so.22
#10 0x00007fa0f152afa2 in osgeo::proj::datum::Datum::~Datum() () from /lib/x86_64-linux-gnu/libproj.so.22
#11 0x00007fa0f152da5d in osgeo::proj::datum::GeodeticReferenceFrame::~GeodeticReferenceFrame() () from /lib/x86_64-linux-gnu/libproj.so.22
#12 0x00007fa0f1503780 in osgeo::proj::crs::SingleCRS::~SingleCRS() () from /lib/x86_64-linux-gnu/libproj.so.22
#13 0x00007fa0f150d7cd in osgeo::proj::crs::GeographicCRS::~GeographicCRS() () from /lib/x86_64-linux-gnu/libproj.so.22
#14 0x00007fa0ea9989d2 in ?? () from /lib/x86_64-linux-gnu/libproj.so.25
#15 0x00007fa17e07e495 in __run_exit_handlers (status=0, listp=0x7fa17e253838 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
    at ./stdlib/exit.c:113
#16 0x00007fa17e07e610 in __GI_exit (status=<optimized out>) at ./stdlib/exit.c:143
#17 0x0000561eda5fb86f in proc_exit ()
#18 0x0000561eda623c12 in PostgresMain ()

Change History (6)

comment:1 by strk, 4 months ago

libproj library version is libproj.so.22.2.1

comment:2 by strk, 4 months ago

From postgis_full_version() the libproj version is:

PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db"

Nothing is said about "compiled against" (I guess we don't have that info exposed)

comment:3 by strk, 4 months ago

Well, full version:

 POSTGIS="3.4.2 c19ce56" [EXTENSION]
 PGSQL="120"
 GEOS="3.12.1-CAPI-1.18.1" (compiled against GEOS 3.10.2)
 SFCGAL="SFCGAL 1.4.1, CGAL 5.3.1, BOOST 1.74.0"
 PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/share/proj/proj.db"
 GDAL="GDAL 3.4.1, released 2021/12/27"
 LIBXML="2.9.13"
 LIBJSON="0.15"
 LIBPROTOBUF="1.3.3"
 WAGYU="0.5.0 (Internal)"
 TOPOLOGY
 RASTER

in reply to:  2 comment:4 by robe, 4 months ago

Replying to strk:

Nothing is said about "compiled against" (I guess we don't have that info exposed)

Or does it just not say anything if PROJ compiled against is the same as proj version? I know we were most concerned with GEOS, but I think doing check for Proj is important too as that is where I've seen a lot of issues come from particularly with people using both Ubuntu GIS and apt.postgresql.org.

Same with GDAL we should record that if different.

comment:5 by strk, 4 months ago

Resolution: invalid
Status: newclosed

Given there are two libproj versions shown in the stack trace this ticket is clearly invalid as it's some sort of packaging bug (there are 2 versions of the same library dynamically linked in).

Let's use a separate ticket for the proj compile-time version check

comment:6 by strk, 4 months ago

I filed a ticket for the compile-time proj version: #5742

Note: See TracTickets for help on using tickets.