This release fixes an issue with the Windows TAP driver that can cause
BSODs on Vista (normally seen in the OpenVPN client). The problem is
that Windows has always restricted kernel threads to a very small stack
size (12KB on x86 32-bit). If they go over this limit, Windows will
crash with a BSOD. Apparently Vista has added a bit more bloat to its
kernel stack usage, and as a result, when the TAP driver is called, and
then it in turn calls other kernel-level functions, there is a chance
that the kernel stack can overflow in a particular sequence of code that
is executed when the client initially connects and gets an IP address
assignment from the server. Apparently because XP is more efficient in
its use of stack space, the same build of the TAP driver running on XP
does not exhibit this defect.
2009.07.16 -- Version 2.1_rc19
* In Windows TAP driver, refactor DHCP/ARP packet injection code to
use a DPC (deferred procedure call) to defer packet injection until
IRQL < DISPATCH_LEVEL, rather than calling NdisMEthIndicateReceive
in the context of AdapterTransmit. This is an attempt to reduce kernel
stack usage, and prevent EXCEPTION_DOUBLE_FAULT BSODs that have been
observed on Vista. Updated TAP driver version number to 9.6.
* In configure.ac, use datadir instead of datarootdir for compatibility
with <autoconf-2.60.
James