Hi,

Samuel Thibault, le Wed 29 Aug 2007 16:50:20 +0200, a écrit :
> Michael Banck, le Wed 29 Aug 2007 16:13:20 +0200, a écrit :
> > eax 0x107502f8
> 
> This is the culprit: fxsave needs the buffer to be 16 bytes-aligned. It
> looks like there is a bug somewhere in the alignment support of
> zalloc().

The attached patch should help: in case the allocation makes sleep,
zalloc_next_space could be changed by another task, and hence possibly
unaligned.

Samuel
Index: kern/zalloc.c
===================================================================
RCS file: /cvsroot/hurd/gnumach/kern/zalloc.c,v
retrieving revision 1.3.2.8
diff -u -p -r1.3.2.8 zalloc.c
--- kern/zalloc.c       30 Apr 2007 20:30:11 -0000      1.3.2.8
+++ kern/zalloc.c       3 Sep 2007 23:22:13 -0000
@@ -320,6 +320,7 @@ static vm_offset_t zget_space(vm_offset_
                        zone_page_init(new_space, space_to_add,
                                                        ZONE_PAGE_USED);
                        simple_lock(&zget_space_lock);
+                       ALIGN_SIZE_UP(zalloc_next_space, align);
                        continue;
                }
 

Reply via email to