Re: lib/60413: iconv_samples test crashes on sparc*
"Robert Elz via gnats" <[email protected]>
| Newsgroups | gmane.os.netbsd.bugs |
|---|---|
| Message-ID | <[email protected]> |
The following reply was made to PR lib/60413; it has been noted by GNATS. From: Robert Elz <[email protected]> To: [email protected] Cc: Subject: Re: lib/60413: iconv_samples test crashes on sparc* Date: Mon, 06 Jul 2026 00:55:40 +0700 That particular one seems to be caused by modules/citrus_viqr.c wherein appears typedef struct { unsigned char chlen; char ch[MB_LEN_MAX]; } _VIQRState; and the sizeof that is taken as the state size. One way to fix it would be to set an alignment on that, to at least sizeof(int) or another might be incitrus_iconv_std.c where in _citrus_iconv_std_iconv_init_context() it does szpssrc = _stdenc_get_state_size(is->is_src_encoding); szpsdst = _stdenc_get_state_size(is->is_dst_encoding); sz = (szpssrc + szpsdst)*2 + sizeof(struct _citrus_iconv_std_context); Note that it goes on to: sc = malloc(sz); if (sc == NULL) return errno; ptr = (char *)&sc[1]; if (szpssrc) init_encoding(&sc->sc_src_encoding, is->is_src_encoding, ptr, ptr+szpssrc); and that ptr+szpssrc is (I think) the void * which ends up being misaligned, but the init of ptr looks a bit casual to me as well, There won't be anything new/rececntly changed about any of this, just no-one ever tried to do this kind of conversion on a sparc (anything with real alignment mandates) before. kre