[ros-dev] Re: [ros-svn] [ion] 20554: - Fix shamefully dangerously broken Work Thread/Queue/Item implementation:

Hartmut Birr osexpert at googlemail.com
Wed Jan 4 00:22:31 CET 2006


ion at svn.reactos.org wrote:
> - Fix shamefully dangerously broken Work Thread/Queue/Item implementation:
>   * Do not pollute the kernel with 10 real-time threads and 5 high-priority threads in order to manage work items. Work threads are very-low priority (< 7) and should never pre-empt userthreads like they do now. 1 priority 7, 5 priority 5 and 3 priority 4 threads are now properly created.
>   * Implement a worker thread balance set manager. On SMP systems, it is able to determine when a new thread should be allocate to execute on a free CPU. On both UP and MP, it is also able to detect if a work queue has deadlocked, and will allocate new dynamic threads to unfreeze the queue.
>   * Add check for threads returning with APC disabled, and re-enable APCs if this happend. This hack is used in NT for broken drivers.
>   * Lots of code changes to support dynamic threads, which:
>     - Can terminate.
>     - Use a 10 minute timeout on the kernel queue.
>   * Add skeleton code for swapping worker thread stacks as well as worker thread shutdown (not yet implemented).
>   * Add WORKER_INVALID bugcheck definition.
>   * These changes seem to make ROS a lot more responsive.
>
> - NDK: 
>   * Make more compatible with MS IFS
>   * Fix EX_WORK_QUEUE definition.
>   * Fix ETHREAD offsets.
>   * Fix RtlIsNameLegalDOS8Dot3 definition.
>   * Move splay tree defines to IFS.
>
>
> Updated files:
> trunk/reactos/include/ndk/exfuncs.h
> trunk/reactos/include/ndk/extypes.h
> trunk/reactos/include/ndk/ifssupp.h
> trunk/reactos/include/ndk/iofuncs.h
> trunk/reactos/include/ndk/obfuncs.h
> trunk/reactos/include/ndk/pstypes.h
> trunk/reactos/include/ndk/rtlfuncs.h
> trunk/reactos/include/ndk/rtltypes.h
> trunk/reactos/lib/rtl/dos8dot3.c
> trunk/reactos/ntoskrnl/ex/work.c
> trunk/reactos/ntoskrnl/ntoskrnl.mc
> trunk/reactos/w32api/include/ddk/ntifs.h
>
> _______________________________________________
> Ros-svn mailing list
> Ros-svn at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-svn
>
>   
After applying this commit, I get a crash during compiling ros on ros
with 'make clean' on a clean tree on my smp machine:

Assertion (Thread->State == Waiting) == (Thread->WaitBlockList != NULL)
failed at ./ntoskrnl/ke/wait.c:722

I don't get a back trace. It may be a problem of the broken ASSERT
statement (DBG=1 and KDBG=0).

- Hartmut





More information about the Ros-dev mailing list