Bug 174324
Summary: | re_compile_fastmap_iter uses uninit value | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | John Reiser <jreiser> |
Component: | glibc | Assignee: | Jakub Jelinek <jakub> |
Status: | CLOSED NOTABUG | QA Contact: | Brian Brock <bbrock> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 5 | ||
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2005-11-28 12:50:00 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
John Reiser
2005-11-27 23:14:18 UTC
valgrind bug (though probably really hard to fix). There are some bitfields in the structure: ... re_token_type_t type : 8; unsigned int constraint : 10; /* context constraint */ unsigned int duplicated : 1; unsigned int opt_subexp : 1; unsigned int accept_mb : 1; unsigned int mb_partial : 1; unsigned int word_char : 1; and GCC optimizes: while (++node < dfa->nodes_len && dfa->nodes[node].type == CHARACTER && dfa->nodes[node].mb_partial) as reading whole 32-bit word that contains both type and mb_partial bitfield, masking it and then comparing. mb_partial is known to be initialized when type == CHARACTER, but not otherwise. If type is not CHARACTER, it is uninitialized, but that doesn't matter, as it doesn't influence runtime at all in that case. But valgrind isn't able to figure it out. |