Frank,
 
Right, that would be the correct fix.
 
I was wondering if there are other places that have similar issues. This 
problem would be very rare in happening, as the memory address would be still 
ok to be read even if it's less then DWORD in len.
 
Inside kernel mode, this becomes a severe problem, throwing invalid memory 
access crashes.
 
- Huihong

--- On Mon, 6/22/09, Frank Mehnert <frank.mehn...@sun.com> wrote:


From: Frank Mehnert <frank.mehn...@sun.com>
Subject: Re: [vbox-dev] vhd format not stable?
To: vbox-dev@virtualbox.org
Date: Monday, June 22, 2009, 3:30 AM


Huihong,

On Friday 19 June 2009, Huihong Luo wrote:
> I tested it again, but it still crashed.
>  
> I think I now found the cause, it's quite delicate, but you should be able
> to fix it right away. 
> a8bd6ffd ff ff ff ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
>  
> The above is the bitmap when crashed. You can see the beginnig there are
> only 3 bytes are valid, the 4th byte will cause crash. 
> But when you call
> ASMBitTest(const volatile void *pvBitmap, int32_t iBit)
>  
> it will the 1st 4-byte int, thus caused the crash.

Good catch!

> The easiest fix is to allocate 8 byte length more for the bitmap, and zero
> fill them, that will definitely solve the issue. You can also change
> ASMBitTest method impl. 

I think a better fix would be to ensure that ASMBitTest isn't called
with non-word-aligned memory addresses.

Kind regards,

Frank
-- 
Dr.-Ing. Frank Mehnert    Sun Microsystems, Inc.    www.sun.com

-----Inline Attachment Follows-----


_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev
_______________________________________________
vbox-dev mailing list
vbox-dev@virtualbox.org
http://vbox.innotek.de/mailman/listinfo/vbox-dev

Reply via email to