Mail Archives: djgpp-workers/2003/04/30/03:52:13
On Tue, 29 Apr 2003, Charles Sandmann wrote:
> @@ -30,4 +49,38 @@
> uclock_t rv;
>
> + _farsetsel(_dos_ds);
This modifies FS, right? And libc code uses GS?
I just stumbled across a RMCB bug that only occurs under Win-XP;
a packet-driver that uses the FS/GS registers (and assumes the
callback saves them). But AFAICS, the gormcb.c code doesn't save
and restore those registers. So the int 1B handler may also cause
havoc.
Another thing, the stack value set in wrapper_common[] sets
ESP to 'malloced_stack + stack_length'. According to my doc's an
i386 decrement ESP *after* a push (opposed to an 286). So the
malloc() area is overwritten by 4 bytes. To make thing worse; the
allocation is a multiple of 8 (ALIGN), so I guess some other area
will choke. At least I got crashes and tracebacks in strange areas
(end+0ff??).
Don't know if problem manifested itself due to the new malloc code
or what. Sorry I don't have the details here now (I'm writing this
in Pine on my ISP shell-account via Watt-32 telnet client).
Whadda you say? Is there some bug lurking here?
--gv
- Raw text -