[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