Description of problem: Unaligned accesses are made when udev starts on ia64. Version-Release number of selected component (if applicable): Fedora ia64 devel, rawhide-20050719 udev-062-2 How reproducible: 100% Steps to Reproduce: 1. Install latest Fedora ia64 devel 2. Boot. Actual results: Starting udev: udevstart(2050): unaligned access to 0x6000000000014d29, ip=0x400000000000f1b1 udevstart(2050): unaligned access to 0x6000000000014b21, ip=0x400000000000bb40 udevstart(2050): unaligned access to 0x6000000000014f59, ip=0x400000000000f1b1 udevstart(2050): unaligned access to 0x6000000000014d41, ip=0x400000000000bb40 [ OK ] and later on when xfs and appletalk start, Starting xfs: udev(4726): unaligned access to 0x6000000000018d29, ip=0x400000000000f581 udev(4726): unaligned access to 0x6000000000018f5c, ip=0x400000000000f581 udev(4726): unaligned access to 0x60000000000193bd, ip=0x400000000000f581 udev(4726): unaligned access to 0x600000000001935d, ip=0x400000000000e2b1 [ OK ] Starting AppleTalk services: Starting atalkd:udev(4839): unaligned access to 0x6000000000018d29, ip=0x400000000000f581 udev(4839): unaligned access to 0x6000000000018f5c, ip=0x400000000000f581 udev(4839): unaligned access to 0x60000000000193bd, ip=0x400000000000f581 udev(4839): unaligned access to 0x600000000001935d, ip=0x400000000000e2b1 [ OK ] Expected results: No errors should be seen. Additional info: If memory serves the issue is that ia64 udev needs to built with the -ftz compile flag.
what does -ftz do?
Something to do with -force-to-zero or -flush-to-zero for the floating point stuff, I think. Shouldn't be relelvant. I'd suspect the patches that Kay posted to the list for it SIGBUSing on sparc might be more relevant here.
Whups -- the -ftz thing was a mistake. Had a brain spasm ... P.
Does the last patch in http://sourceforge.net/mailarchive/forum.php?thread_id=7720331&forum_id=3157 work for you?
Bill, The link pushes me to the general list -- not a specific set of patches. Can you attach the patch here/email it to me? Thanks, P.
See the next-to-last mail in the thread: diff --git a/udev_rules_parse.c b/udev_rules_parse.c --- a/udev_rules_parse.c +++ b/udev_rules_parse.c @@ -241,6 +241,7 @@ static int add_to_rules(struct udev_rule int valid; char *linepos; char *attr; + size_t padding; int retval; /* get all the keys */ @@ -506,6 +507,11 @@ static int add_to_rules(struct udev_rule /* grow buffer and add rule */ rule_size = sizeof(struct udev_rule) + rule->bufsize; + padding = (sizeof(size_t) - rule_size % sizeof(size_t)) % sizeof(size_t); + dbg("add %zi padding bytes", padding); + rule_size += padding; + rule->bufsize += padding; + rules->buf = realloc(rules->buf, rules->bufsize + rule_size); if (!rules->buf) { err("realloc failed");
That looks like it fixes it .... Thanks Bill. P.
Did 063-x fix this for you?
This is fixed.