Re: [BUGS] Crash report for some ICU-52 (debian8) COLLATE and work_mem values - Mailing list pgsql-bugs
| From | Daniel Verite |
|---|---|
| Subject | Re: [BUGS] Crash report for some ICU-52 (debian8) COLLATE and work_mem values |
| Date | |
| Msg-id | a5e86b28-6c16-49ee-9461-4345880c31d0@manitou-mail.org Whole thread Raw |
| In response to | Re: [BUGS] Crash report for some ICU-52 (debian8) COLLATE andwork_mem values (Peter Geoghegan <pg@bowt.ie>) |
| Responses |
Re: [BUGS] Crash report for some ICU-52 (debian8) COLLATE andwork_mem values
Re: [BUGS] Crash report for some ICU-52 (debian8) COLLATE andwork_mem values |
| List | pgsql-bugs |
Peter Geoghegan wrote:
> I'd be interested to see if anything changed when -1 was passed as
> both sourceLength and targetLength to ucol_strcollUTF8(). You'd have
> to build Postgres yourself to test this, but it would just work, since
> we don't actually avoid NUL termination, even though in principled we
> could with ICU.
It doesn't seem to change the outcome:
*** varlena.c~ 2017-07-10 22:26:20.000000000 +0200
--- varlena.c 2017-08-02 12:57:25.997265001 +0200
***************
*** 2137,2144 ****
status = U_ZERO_ERROR; result =
ucol_strcollUTF8(sss->locale->info.icu.ucol,
! a1p, len1,
! a2p, len2, &status); if
(U_FAILURE(status)) ereport(ERROR,
--- 2137,2144 ----
status = U_ZERO_ERROR; result =
ucol_strcollUTF8(sss->locale->info.icu.ucol,
! a1p, -1, /* len1 */
! a2p, -1, /*len2,*/ &status);
if (U_FAILURE(status)) ereport(ERROR,
For the case when its ends up crashing in memcpy, the backtrace now looks
like this:
#0 __memcpy_sse2_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:35
#1 0x00007f0156812e6b in memcpy (__len=8589934592, __src=0x7efbeac89010, __dest=<optimized out>) at
/usr/include/x86_64-linux-gnu/bits/string3.h:51
#2 ucol_CEBuf_Expand (ci=<optimized out>, status=0x7ffd49c4ca98, b=0x7ffd49c4ab60) at ucol.cpp:7009
#3 UCOL_CEBUF_PUT (status=0x7ffd49c4ca98, ci=0x7ffd49c4bde0, ce=1493173509, b=0x7ffd49c4ab60) at ucol.cpp:7022
#4 ucol_strcollRegular (sColl=sColl@entry=0x7ffd49c4bde0, tColl=tColl@entry=0x7ffd49c4bf90,
status=status@entry=0x7ffd49c4ca98) at ucol.cpp:7163
#5 0x00007f0156818177 in ucol_strcollRegularUTF8 (coll=0x2286100, source=source@entry=0x3651829 "쳭喩zz",
sourceLength=sourceLength@entry=-1,target=<optimized out>, targetLength=targetLength@entry=-1,
status=status@entry=0x7ffd49c4ca98) at ucol.cpp:8023
#6 0x00007f0156819d36 in ucol_strcollUseLatin1UTF8 (status=<optimized out>, tLen=<optimized out>, target=<optimized
out>,sLen=<optimized out>, source=<optimized out>, coll=<optimized out>) at ucol.cpp:8108
#7 ucol_strcollUTF8_52 (coll=<optimized out>, source=source@entry=0x3651829 "쳭喩zz", sourceLength=<optimized out>,
sourceLength@entry=-1,target=<optimized out>, target@entry=0x3651799 "콗喩zx㎍", targetLength=targetLength@entry=-1,
status=status@entry=0x7ffd49c4ca98)at ucol.cpp:8770
#8 0x00000000007cc7df in varstrfastcmp_locale (x=56956968, y=56956824, ssup=<optimized out>) at varlena.c:2139
#9 0x0000000000817168 in ApplySortAbbrevFullComparator (ssup=0x2280338, isNull2=<optimized out>, datum2=<optimized
out>,isNull1=<optimized out>, datum1=<optimized out>) at
../../../../src/include/utils/sortsupport.h:263
#10 comparetup_datum (a=0x7f0141c14228, b=0x7f0141c14240, state=<optimized out>) at tuplesort.c:4350
#11 0x0000000000815b1f in qsort_tuple (a=0x7f0141c14210, n=<optimized out>, n@entry=106,
cmp_tuple=cmp_tuple@entry=0x817060<comparetup_datum>, state=state@entry=0x2280128) at qsort_tuple.c:104
.....
Anyway I'll try to build ICU-52 without optimization to avoid these
<optimized out> parameters.
Also running the same tests with a self-compiled ICU-59 versus debian's
packaged
ICU-52 results in *no crash at all*. So maybe the root cause of these crashes
is
that a critical fix in ICU has not been backported?
I note that the list of ICU locales available in pg_collation is different
though.
When compiled with ICU-59, initdb produces "only" 581 collname
matching '%icu%', versus 1741 with ICU-52. The ICU version
is the only thing that differs between both cases.
But anyway in the list of collations that crash for me with ICU-52, a fair
number
(~50) are still there and work in ICU-59, so I think the comparison is still
meaningful.
Best regards,
--
Daniel Vérité
PostgreSQL-powered mailer: http://www.manitou-mail.org
Twitter: @DanielVerite
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs
pgsql-bugs by date: