NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
lib/60413: iconv_samples test crashes on sparc*
>Number: 60413
>Category: lib
>Synopsis: iconv_samples test crashes on sparc*
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: lib-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jul 05 16:20:00 +0000 2026
>Originator: Martin Husemann
>Release: NetBSD 11.99.6
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD thirdstage.duskware.de 11.99.6 NetBSD 11.99.6 (MODULAR) #901: Sat Jul 4 16:44:37 CEST 2026 martin%thirdstage.duskware.de@localhost:/home/martin/current/src/sys/arch/sparc64/compile/MODULAR sparc64
Architecture: sparc64
Machine: sparc64
>Description:
Running the /usr/tests/lib/libc/locale/t_iconv test crashes on sparc*.
>How-To-Repeat:
cd /usr/tests/lib/libc/locale && gdb ./t_iconv
(gdb) run iconv_samples
test case 0: us-ascii to us-ascii from us-ascii to us-ascii
test case 0: us-ascii to us-ascii from us-ascii to us-ascii
test case 1: iso-8859-1 to UTF-8 from iso-8859-1 to UTF-8
test case 1: UTF-8 to iso-8859-1 from UTF-8 to iso-8859-1
test case 2: UTF-8 to ZW from UTF-8 to ZW
test case 2: ZW to UTF-8 from ZW to UTF-8
test case 3: UTF-8 to VIQR from UTF-8 to VIQR
test case 3: VIQR to UTF-8 from VIQR to UTF-8
Program received signal SIGBUS, Bus error.
_citrus_UTF8_stdenc_init_state (ce=0x40216840, ps=0x402bc072) at /home/martin/current/src/lib/libc/citrus/citrus_stdenc_template.h:105
105 _FUNCNAME(init_state)(_CE_TO_EI(ce), _TO_STATE(ps));
(gdb) ptype ps
type = void * restrict
(gdb) disas
Dump of assembler code for function _citrus_UTF8_stdenc_init_state:
0x0000000041600da0 <+0>: save %sp, -176, %sp
=> 0x0000000041600da4 <+4>: clr [ %i1 + 8 ]
0x0000000041600da8 <+8>: return %i7 + 8
0x0000000041600dac <+12>: clr %o0
End of assembler dump.
(gdb) p/x $i1
$2 = 0x402bc072
(gdb) up
#2 init_encoding (se=0x402bc018, cs=<optimized out>, ps1=<optimized out>, ps2=0x402bc07e)
at /home/martin/current/src/lib/libc/citrus/modules/citrus_iconv_std.c:165
165 ret = _stdenc_init_state(cs, se->se_ps);
(gdb) p *se
$4 = {se_handle = 0x40216840, se_ps = 0x402bc072, se_pssaved = 0x402bc07e}
(gdb) ptype /o _UTF8State
type = struct {
/* 0 | 6 */ char ch[6];
/* XXX 2-byte hole */
/* 8 | 4 */ int chlen;
/* total size (bytes): 12 */
}
This means _UTF8State will require 4-byte alignment.
The void* passed is misalgined and _TO_STATE(ps) just is a plain cast.
>Fix:
n/a
Home |
Main Index |
Thread Index |
Old Index