We're updating the issue view to help you get more done. 

ASAN failure on cmsgtst/MessageFormatTest

Description

Address sanitizer failure on Macintosh, in cmsgtst/MessageFormatTest

1 2 3 4 5 6 7 8 9 cmsgtst { OpenMessageFormatTest ---[OK] MessageFormatTest ASAN:DEADLYSIGNAL ================================================================= ==84680==ERROR: AddressSanitizer: SEGV on unknown address 0x7ffe00000000 (pc 0x000100eb5833 bp 0x7ffeef81b170 sp 0x7ffeef81aca0 T0) ==84680==The signal is caused by a WRITE memory access. #0 0x100eb5832 in umsg_vparse_61 umsg.cpp:563 #1 0x100eb7ea7 in umsg_parse_61 umsg.cpp:502 #2 0x1004b22e4 in MessageFormatTest cmsgtst.c:245

The test code indicates this test is troublesome:

1 2 3 4 5 6 7 8 9 10 11 12 13 if (returnsNullForType(1, (double)2.0)) { /* HP/UX and possibly other platforms don't properly check for this case. We pass in a UDate, but the function expects a UDate *. When va_arg is used, most compilers will return NULL, but HP-UX won't do that and will return 2 in this case. This is a platform dependent test. It crashes on some systems. If you get a crash here, see the definition of returnsNullForType. This relies upon "undefined" behavior, as indicated by C99 7.15.1.1 paragraph 2 */ umsg_parse(formatter,result,resultLength,&count,&ec,one,two,d2); if(ec!=U_ILLEGAL_ARGUMENT_ERROR){ log_err("FAIL: Did not get expected error for umsg_parse(). Expected: U_ILLEGAL_ARGUMENT_ERROR Got: %s \n",u_errorName(ec));

It would be good to clean this up. Address sanitizer failures are fatal, so this prevents the running of subsequent tests.

Environment

Status

Assignee

Andy Heninger

Reporter

Andy Heninger

tracCreated

Mar 23, 2018, 7:56 PM

tracOwner

andy

tracProject

ICU4C

tracReporter

andy

tracStatus

accepted

Components

Fix versions

Priority

medium