This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [gdbserver/win32] (4/11) New interrupting method


Pedro Alves escribió:
Hi,

Here is the new method to stop the inferior, based on a mix of
Leo's and mine patches.  The idea is simple.  Loop through all
the inferior threads suspending them.

This version doesn't contain the gdbserver priority handling,
which means that there is a higher chance of the inferior
breaking the method, since the operation is not atomic.  For
example by tweaking its own thread's priorities or if the
inferior is calling ResumeThread in its own threads while
gdbserver is stopping them.

The next patch will minimize those chances, by elevating
gdbserver's priority while stopping the inferior with
this method.

Leo, did I miss anything?

Regtested on a local i686-pc-cygwin gdbserver.

Cheers,
Pedro Alves




I think this patch breaks interrupt functionality.
The function suspend_one_thread in the new patch does not seem to retreive the thread context and sets the thread suspend count to 1, so the next call to thread_rec that should happen in gdbserver will get incorrect thread context.


My interrupt patch I sent initially used thread_rec to pause the child threads, so get context should work here.
I think it's more correct anyway to use thread_rec everywhere so that SuspendThread is centralized in one unique function.


Is this correct, or is there something I may have slipped reading your patch?

Leo.






Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]