Known issues release 4

From liblfds.org
Jump to: navigation, search

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)