Known issues release 4
Current
1. slist is broken. About 10% of the test program runs for slist will assert on a NULL pointer. (This may be due to the pointer decleration problem, which has been fixed; further testing may result in this known issue being revoked).
2. 32-bit Windows kernel build is broken. This is due to bug in an MS header. There is a fix for this bug and it is present for the 32-bit user-mode build, but is missing for the 32-bit kernel build. To fix, modify /inc/liblfds.h, adding these two lines at line 67;
// TRD : this define is documented but missing in Microsoft Platform SDK v7.0 #define _InterlockedCompareExchangePointer(destination, exchange, compare) _InterlockedCompareExchange((volatile long *) destination, (long) exchange, (long) compare)
This will give you the following (which is the section for 32-bit Windows kernel builds);
#if (!defined _WIN64 && defined _WIN32 && defined _MSC_VER && defined WIN_KERNEL_BUILD) // TRD : 32-bit Windows kernel with the Microsoft C compiler, any CPU #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <wdm.h> typedef unsigned long int atom_t; #define INLINE extern __forceinline #define ALIGN(alignment) __declspec( align(alignment) ) #define ALIGN_SINGLE_POINTER 4 #define ALIGN_DOUBLE_POINTER 8 // TRD : this define is documented but missing in Microsoft Platform SDK v7.0 #define _InterlockedCompareExchangePointer(destination, exchange, compare) _InterlockedCompareExchange((volatile long *) destination, (long) exchange, (long) compare) #endif
3. Queue and ringbuffer are broken. There is a subtle queue bug which under heavy load leads to element re-ordering. The ringbuffer uses the queue and so is also affected. This has been fixed in release 5.
Revoked
No revocations.
History
- Added #1 (4th Dec 09)
- Added #2 (11th Dec 09)
- Added #3 (13th Dec 09)
- Updated #3 (14th Dec 09)
- Updated #3 (17th Dec 09)
- Updated #3 (19th Dec 09)