Custom Query (80 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (40 - 42 of 80)

Ticket Resolution Summary Owner Reporter
#77 fixed Fix stack size interpretation in CreateThread(). dmik
Description

Currently, the stack size passed to CreateThread?() is interpreted as the whole (maximum) stack size. Ноwever under real Windows, according to MSDN, this parameter by default specifies the size of the pre-committed area on top of the stack; the whole stack size is defined by the PE header in this case (1 MB by default). In order to override the header, the STACK_SIZE_PARAM_IS_A_RESERVATION flag must be used, so that the stack size in CreateThread?() will define the whole area.

#82 fixed Make SEH work in OS/2 context dmik
Description

The current implementation of SEH (__try/__except) requires Odin to force the Win32 TIB switch mode in which the FS register points to the Win32 thread information block instead of the OS/2 one.

This mode is the default in Odin if it runs a Win32 binary as this is what the binary expects and needs. But in cases when we build Win32 apps from sources there is actually no sense in maintaining this FS context switch from OS/2 to Win32 and back. Even if the Win32 application not only uses __try/__except but also accesses FS directly, it can always be tailored with #ifdef (we can access the Win32 TIB with GetThreadTEB() regardless of the real FS value).

Switching FS may even be dangerous in some cases and this especially relates to situations when Win32 code calls OS/2 code and vice versa: the called party may not expect a wrong context (if e.g. it does its own exception handling since this is what FS is used mostly for). In either case, maintaining the context switch is error-prone per se due its complexity (you may look at e.g. sehutil.s to see it).

#83 fixed Disable context switches dmik
Description

I have a guess that if we build a Win32 application from sources, we don't need to switch the FS register from the OS/2 TIB to the Win32 TIB and back. This is a continuation of the idea from #82 (which already eliminates the need to do this FS switch in order for SEH to work).

If we can get rid of this switch completely, we will get save ourselves from having a milky-way of function wrappers used to call OS/2 functions from the Win32 context (and the other way around). Getting rid of something is always good as it reduces chaos.

Note: See TracQuery for help on using queries.