Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


WaitForCritical Section.

OSR_Community_UserOSR_Community_User Member Posts: 110,217
Hi all,
I have one COM application which load the inproc components.
This component creates a lots of threads.
The problem with me is that I use SuspendThread to suspend some of the
threads which might be waiting
for some event to be triggered. And I am sure that there is a deadlock, but
i couldnt find it out.

The thread stack when observed in Windbg shows one of the threads stuck up
at
Waitforcriticalsection...But i couldnt find out the other thread which waits
on the same event.

The assembly code in the WaitforcriticalSection function shows

int 2e
ret

Could anyone tell me what int 2e does...

thanx
Manish

Comments

  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    Int 2Eh is the system trap used for all system calls. Kernel32.dll calls
    ntdll.dll that uses Int 2Eh to talk with NT's kernel.

    There is a detailed description at


    Niraj

    "Sapariya Manish.j" wrote:
    >
    > Hi all,
    > I have one COM application which load the inproc components.
    > This component creates a lots of threads. The problem with me is that
    > I use SuspendThread to suspend some of the threads which might be
    > waiting for some event to be triggered. And I am sure that there is a
    > deadlock, but i couldnt find it out.
    >
    > The thread stack when observed in Windbg shows one of the threads stuck
    > up at Waitforcriticalsection...But i couldnt find out the other thread
    > which waits on the same event.
    >
    > The assembly code in the WaitforcriticalSection function shows
    >
    > int 2e
    > ret
    >
    > Could anyone tell me what int 2e does...
    >
    > thanx
    > Manish
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    > The problem with me is that I use SuspendThread to suspend some of the
    > threads which might be waiting

    Why use such a rough way? The thread will be possibly suspended while
    holding locks - sure way to deadlock.
    Use WaitForSingleObject on the event to suspend a thread.

    Max
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    Also you can call KeEnterCriticalRegion to disable
    normal kernel APCs or raise Irql to APC_LEVEL to
    disable all APCs.

    Thread suspending is done through the APC.
    But I'm not sure if special or regular.

    Paul

    > -----P?vodn? zpr?va-----
    > Od: Maxim S. Shatskih [SMTP:[email protected]]
    > Odesl?no: 30. ?ervna 2000 17:52
    > Komu: NT Developers Interest List
    > P?edm?t: [ntdev] Re: WaitForCritical Section.
    >
    > > The problem with me is that I use SuspendThread to suspend some of the
    > > threads which might be waiting
    >
    > Why use such a rough way? The thread will be possibly suspended while
    > holding locks - sure way to deadlock.
    > Use WaitForSingleObject on the event to suspend a thread.
    >
    > Max
    >
    >
    > ---
    > You are currently subscribed to ntdev as: [email protected]
    > To unsubscribe send a blank email to $subst('Email.Unsub')
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 13-17 May 2024 Live, Online
Developing Minifilters 1-5 Apr 2024 Live, Online
Internals & Software Drivers 11-15 Mar 2024 Live, Online
Writing WDF Drivers 20-24 May 2024 Live, Online