[ros-kernel] "My Computer" crash
Richard Campbell
eek2121 at comcast.net
Wed Feb 18 05:33:39 CET 2004
This doesn't appear to be a result of thomas's change, i tested it.
Richard
Jason Filby wrote:
>Great work Ge! I'm sure that's been a source of other problems too.
>
>Also - ReactOS seems to be far snappier since I last built it several
>
>hours ago?
>
>There also seems to be a new bug relating to focus/activation: I
>can't
>click on the Start button. In fact, the only thing that works now is
>opening My Computer - I can't click menus or any of the drive icons -
>in
>fact - it seems that the Explorer window loses focus. The only recent
>
>commit that seems as though it may be related is a fix to search
>backwards in winpos.c by Thomas. I may be wrong about this, but it's
>the
>first thing that comes to mind.
>
>Cheers
>Jason
>
>Ge van Geldorp wrote:
>
>
>
>>When double-clicking on "My Computer" in VMware, Explorer would
>>
>>
>often
>
>
>>crash, shutting down the system. I finally tracked it down to
>>
>>HeapAlloc() not always returning 8-byte aligned blocks (sometimes it
>>
>>would return blocks at xxxxxxx4 or xxxxxxxC). This causes
>>
>>Local/GlobalAlloc to misbehave. Someone before me already tried to
>>
>>
>fix
>
>
>>it:
>>
>>
>>
>> phandle = RtlAllocateHeap(GetProcessHeap(), 0,
>>
>>sizeof(GLOBAL_HANDLE));
>>
>> /* This little hack is to make sure that we get a pointer with
>>
>>
>8-byte
>
>
>> ** alignment.
>>
>> ** Fixme: When we are sure all allocations are 8-byte aligned,
>>
>> ** we can remove this hack.
>>
>> */
>>
>> if (ISPOINTER(INTERN_TO_HANDLE(phandle)))
>>
>> {
>>
>> hack_fix = RtlAllocateHeap(GetProcessHeap(), 0,
>>
>>sizeof(GLOBAL_HANDLE));
>>
>> RtlFreeHeap(GetProcessHeap(), 0, phandle);
>>
>> phandle = hack_fix;
>>
>> }
>>
>>
>>
>>Unfortunately, the 2nd call to RtlAllocateHeap() was not guaranteed
>>
>>
>to
>
>
>>return an 8-byte aligned block either. The end result was that
>>
>>GlobalAlloc returned what looked like a pointer while in reality it
>>
>>
>was
>
>
>>a handle. Via a series of 4 memory overwrites this finally caused
>>
>>
>the
>
>
>>crash. A small debugging nightmare I might add.
>>
>>
>>
>>Normally, I wouldn't bother y'all with this. However, I fixed it by
>>
>>adjusting some structures in reactos/lib/ntdll/rtl/heap.c and making
>>
>>
>a
>
>
>>change to one of these low-level memory allocation routines while
>>
>>
>we're
>
>
>>in a freeze period makes me feel slightly uneasy. OTOH, the problem
>>
>>
>in
>
>
>>my opinion was seriously enough to need a fix ASAP.
>>
>>
>>
>>Gé van Geldorp.
>>
>>
>>
>>
>>
>>_______________________________________________
>>
>>Ros-kernel mailing list
>>
>>Ros-kernel at reactos.com
>>
>>http://reactos.com/mailman/listinfo/ros-kernel
>>
>>
>>
>>
>>
>
>
>__________________________________
>Do you Yahoo!?
>Yahoo! Mail SpamGuard - Read only the mail you want.
>http://antispam.yahoo.com/tools
>_______________________________________________
>Ros-kernel mailing list
>Ros-kernel at reactos.com
>http://reactos.com/mailman/listinfo/ros-kernel
>
>
>
More information about the Ros-kernel
mailing list