NetBSD Problem Report #58777
From www@netbsd.org Sat Oct 26 14:53:42 2024
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits)
client-signature RSA-PSS (2048 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id DC9E71A923D
for <gnats-bugs@gnats.NetBSD.org>; Sat, 26 Oct 2024 14:53:42 +0000 (UTC)
Message-Id: <20241026145341.62C231A923E@mollari.NetBSD.org>
Date: Sat, 26 Oct 2024 14:53:41 +0000 (UTC)
From: csardi.gabor@gmail.com
Reply-To: csardi.gabor@gmail.com
To: gnats-bugs@NetBSD.org
Subject: R crash in UTF-8 locale
X-Send-Pr-Version: www-1.0
>Number: 58777
>Category: pkg
>Synopsis: R crash in UTF-8 locale
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Oct 26 14:55:00 +0000 2024
>Last-Modified: Mon Dec 09 20:20:02 +0000 2024
>Originator: Gabor Csardi
>Release: 10.0
>Organization:
Posit Software, PBC
>Environment:
NetBSD vmactions.org 10.0 NetBSD 10.0 (GENERIC) #0: Thu Mar 28 08:33:33 UTC 2024 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC amd64
>Description:
Vanilla installation of 'R' crashes in UTF-8 locale:
vmactions# LANG=C.UTF-8 R -q -e 'toupper("foo")'
During startup - Warning message:
Setting LC_COLLATE failed, using "C"
> toupper("foo")
*** caught segfault ***
address 0x298, cause 'memory not mapped'
Traceback:
1: toupper("foo")
An irrecoverable exception occurred. R is aborting now ...
[1] Segmentation fault (core dumped) LANG=C.UTF-8 R -q -e "toupper(\"foo\")"
Traceback:
# LANG=C.UTF-8 R -q -d gdb
...
(gdb) run
Starting program: /usr/pkg/lib/R/bin/exec/R -q
[New process 9003]
During startup - Warning message:
Setting LC_COLLATE failed, using "C"
> toupper("foo")
Thread 1 "" received signal SIGSEGV, Segmentation fault.
0x00007be20a2ae697 in towctrans () from /usr/lib/libc.so.12
(gdb) bt
#0 0x00007be20a2ae697 in towctrans () from /usr/lib/libc.so.12
#1 0x00007be20b4b8e35 in do_tolower () from /usr/pkg/lib/R/lib/libR.so
#2 0x00007be20b53d5ef in bcEval_loop () from /usr/pkg/lib/R/lib/libR.so
#3 0x00007be20b555d55 in bcEval () from /usr/pkg/lib/R/lib/libR.so
#4 0x00007be20b555fc8 in Rf_eval () from /usr/pkg/lib/R/lib/libR.so
#5 0x00007be20b5581cf in R_execClosure () from /usr/pkg/lib/R/lib/libR.so
#6 0x00007be20b558f58 in applyClosure_core () from /usr/pkg/lib/R/lib/libR.so
#7 0x00007be20b5562a0 in Rf_eval () from /usr/pkg/lib/R/lib/libR.so
#8 0x00007be20b58af87 in Rf_ReplIteration () from /usr/pkg/lib/R/lib/libR.so
#9 0x00007be20b58b317 in R_ReplConsole () from /usr/pkg/lib/R/lib/libR.so
#10 0x00007be20b58b3aa in run_Rmainloop () from /usr/pkg/lib/R/lib/libR.so
#11 0x0000000017a00d25 in main ()
This works, but ideally I would like to use an UTF-8 locale:
vmactions# LANG=C R -q -e 'toupper("foo")'
> toupper("foo")
[1] "FOO"
Other UTF-8 locales, e.g. en_US.UTF-8 or en_GB.UTF-8 crash as well.
>How-To-Repeat:
See above. Run:
pkg_add R
LANG=C.UTF-8 R -q -e 'toupper("foo")'
>Fix:
Sorry, I don't know. :(
>Audit-Trail:
From: coypu@sdf.org
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: pkg/58777: R crash in UTF-8 locale
Date: Mon, 9 Dec 2024 20:15:08 +0000
Backtrace with slightly more information:
(I'm curious about the use_UTF8 = false, that seems strange)
(gdb) bt full
#0 0x00007c54abca3ae6 in _towctrans_priv (te=0x7c54ab490950, c=102) at /data/cvs/src/lib/libc/locale/_wctrans_local.h:41
No locals.
#1 towctrans (wc=102, charmap=charmap@entry=0x7c54ab490950) at /data/cvs/src/lib/libc/locale/iswctype_mb.c:175
te = 0x7c54ab490950
#2 0x00007c54ac1320bf in do_tolower (call=<optimized out>, op=<optimized out>, args=<optimized out>, env=<optimized out>)
at character.c:1156
xi = <optimized out>
nb = <optimized out>
tr = 0x7c54ab490950
wc = 0x7c54a9ae6000 L"foo"
cbuf = <optimized out>
nc = 3
j = 0
x = 0x7c54a9ae19d8
y = 0x7c54a9ae18f8
i = 0
n = 1
ul = <optimized out>
p = <optimized out>
el = 0x7c54a9ffd0a8
ienc = <optimized out>
use_UTF8 = FALSE
vmax = 0x0
#3 0x00007c54ac1bad94 in bcEval_loop (ploc=ploc@entry=0x7f7fff5a2de0) at eval.c:8141
fun = 0x7c54ab554690
call = 0x7c54a9ae4c10
flag = 0
vmax = 0x0
value = <optimized out>
args = 0x7c54a9ae4a18
which = <optimized out>
locals = {body = 0x7c54a9ae5000, rho = 0x7c54a9ae4a88, vcache = 0x7c54aa6ff490, smallcache = TRUE, pc = 0x7c54aa139878}
body = 0x7c54a9ae5000
rho = <optimized out>
constants = <optimized out>
pc = 0x7c54aa139958
codebase = <optimized out>
vcache = <optimized out>
smallcache = <optimized out>
currentpc = 0x7c54aa139948
oldbcpc = 0x0
evalcount = 306
#4 0x00007c54ac1c6ac6 in bcEval (body=body@entry=0x7c54a9ae5000, rho=rho@entry=0x7c54a9ae4a88) at eval.c:7524
globals = {oldntop = 0x7c54aa6ff480, oldbcintactive = 0, oldbcbody = 0x0, oldbcpc = 0x0, oldbcframe = 0x0,
oldsrcref = 0x7c54ab57dee0, old_bcprot_top = 0x7c54aa6ff480, old_bcprot_committed = 0x7c54aa6ff480, oldevdepth = 2}
locals = {body = 0x7c54a9ae5000, rho = 0x7c54a9ae4a88, vcache = 0x7c54aa6ff490, smallcache = TRUE, pc = 0x7c54aa139878}
value = <optimized out>
#5 0x00007c54ac1c6c71 in Rf_eval (e=e@entry=0x7c54a9ae5000, rho=rho@entry=0x7c54a9ae4a88) at eval.c:1167
op = <optimized out>
tmp = <optimized out>
evalcount = 989
bcintactivesave = 0
srcrefsave = 0x7c54ab57dee0
depthsave = 1
#6 0x00007c54ac1c8b3e in R_execClosure (call=call@entry=0x7c54a9ae52d8, newrho=newrho@entry=0x7c54a9ae4a88,
sysparent=<optimized out>, rho=rho@entry=0x7c54ab537cb8, arglist=arglist@entry=0x7c54a9ae4af8, op=op@entry=0x7c54a9ae5070)
at eval.c:2398
body = 0x7c54a9ae5000
cntxt = {nextcontext = 0x7c54ac4c5020 <R_Toplevel>, callflag = 12, cjmpbuf = {136703065870448, 140187721675328,
136703065868936, 136703093472440, 136703065869048, 136703065870448, 140187721674856, 136703106648645, 0,
136703085172848, 136703105298600, 140183437574145}, cstacktop = 4, evaldepth = 1, promargs = 0x7c54a9ae4af8,
callfun = 0x7c54a9ae5070, sysparent = 0x7c54ab537cb8, call = 0x7c54a9ae52d8, cloenv = 0x7c54a9ae4a88,
conexit = 0x7c54ab57dee0, cend = 0x0, cenddata = 0x7c54ab57dee0, vmax = 0x0, intsusp = 0, gcenabled = 1,
bcintactive = 0, bcbody = 0x0, bcpc = 0x0, relpc = -1, handlerstack = 0x7c54ab57dee0, restartstack = 0x7c54ab57dee0,
prstack = 0x0, nodestack = 0x7c54aa6ff480, bcprottop = 0x7c54aa6ff480, bcframe = 0x0, srcref = 0x7c54ab57dee0,
browserfinish = 0, returnValue = {tag = 0, flags = 0, u = {ival = 0, dval = 0, sxpval = 0x0}}, jumptarget = 0x0,
jumpmask = 0}
dbg = FALSE
#7 0x00007c54ac1c8c21 in applyClosure_core (call=call@entry=0x7c54a9ae52d8, op=op@entry=0x7c54a9ae5070, arglist=0x7c54a9ae4af8,
rho=rho@entry=0x7c54ab537cb8, suppliedvars=<optimized out>, unpromise=unpromise@entry=TRUE) at eval.c:2311
newrho = 0x7c54a9ae4a88
val = <optimized out>
is_getter_call = <optimized out>
#8 0x00007c54ac1c93f3 in Rf_applyClosure (call=call@entry=0x7c54a9ae52d8, op=op@entry=0x7c54a9ae5070, arglist=<optimized out>,
rho=rho@entry=0x7c54ab537cb8, suppliedvars=<optimized out>, unpromise=unpromise@entry=TRUE) at eval.c:2333
val = <optimized out>
#9 0x00007c54ac1c6f06 in Rf_eval (e=e@entry=0x7c54a9ae52d8, rho=rho@entry=0x7c54ab537cb8) at eval.c:1285
pargs = <optimized out>
op = 0x7c54a9ae5070
tmp = <optimized out>
evalcount = 989
bcintactivesave = 0
srcrefsave = 0x7c54ab57dee0
depthsave = 0
#10 0x00007c54ac1fb97d in Rf_ReplIteration (rho=rho@entry=0x7c54ab537cb8, savestack=savestack@entry=0,
browselevel=browselevel@entry=0, state=state@entry=0x7f7fff5a34d0) at main.c:262
c = <optimized out>
browsevalue = <optimized out>
value = <optimized out>
thisExpr = 0x7c54a9ae52d8
wasDisplayed = FALSE
#11 0x00007c54ac1fbb32 in R_ReplConsole (rho=0x7c54ab537cb8, savestack=savestack@entry=0, browselevel=browselevel@entry=0)
at main.c:314
status = <optimized out>
state = {status = PARSE_OK, prompt_type = 1, browselevel = 0, buf = "toupper(\"foo\")\n", '\000' <repeats 4081 times>,
bufp = 0x7f7fff5a34eb ""}
#12 0x00007c54ac1fbbd7 in run_Rmainloop () at main.c:1216
No locals.
#13 0x00007c54ac1fbbf1 in Rf_mainloop () at main.c:1223
No locals.
#14 0x0000000000156473 in main (ac=<optimized out>, av=<optimized out>) at Rmain.c:29
No locals.
(Contact us)
$NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2024
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.