[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] Issue with CDT CDI Debugger in Helios
|
> -----Original Message-----
> From: cdt-dev-bounces@xxxxxxxxxxx
> [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Nayna Jain
> Sent: Thursday, November 22, 2012 3:36 AM
> To: CDT General developers list.
> Subject: Re: [cdt-dev] Issue with CDT CDI Debugger in Helios
>
> Hi Marc,
>
> I rechecked the values related to inferior.pid in both CDT
> 6.x (version for
> which my code was working fine i.e. with Galileo) and CDT 7.x
> (for which it
> is crashing both the eclipse i.e. in Helios)
Nice investigation.
> Here are my observations:
>
> 1. Both has the similar values for PID i.e. 0 or -1 at the
> same time as I
> went through their stack traces.
> 2. In both cases, suspend actually calls MIProcessAdapter.interrupt()
> first.
>
> However the code of MIProcessAdapter.interrupt() is different
> in CDT 6.x
> and CDT 7.x version.
> Below is the code snippet for each version
>
> For CDT 6.x
>
> public void interrupt (MIInferior inferior) {
> if (fGDBProcess instanceof Spawner) {
> if (inferior.isRunning()) {
> Spawner gdbSpawner = (Spawner) fGDBProcess;
> gdbSpawner.interrupt();
> waitForInterrupt(inferior);
> }
> // If we are still running try to drop the sig to the PID
> if (inferior.isRunning() && inferior.getInferiorPID() > 0 ) {
> // lets try something else
> interruptInferior(inferior);
> }
> }
> }
>
>
> For CDT 7.x
>
> public void interrupt (MIInferior inferior) {
> if (fGDBProcess instanceof Spawner) {
> if ( inferior.isRunning()) {
> Spawner gdbSpawner = (Spawner) fGDBProcess;
> if ( inferior.isAttachedInferior()
> && !inferior.isRemoteInferior()) {
> // not all gdb versions forward the interrupt
> to an attached
> // local inferior, so interrupt the inferior directly.
> interruptInferior(inferior);
> }
> else {
> // standard case (gdb launches process) and remote case
> (gdbserver)
> gdbSpawner.interrupt();
> }
> waitForInterrupt(inferior);
> }
> }
> }
>
>
> Code for interruptInferior(MIInferior inferior) is same for both.
>
> So, as you see there is change in the code in 7.x and looks
> like pid value
> do not affect the decision in 7.x interrupt() method.
> So, in case of 6.x interruptInferior(...) is not getting
> called but in 7.x
> interruptInferior(...) is getting called, at which point when
> raise() is
> called, both eclipse instances are crashing.
>
> I see on the console message as [Interrupt] . So, it looks
> like SIGINT is
> going to both the eclipse processes.
>
> Please explain the change and based on that what thing the
> user/client has to take care in his code.
I big effort to improve interrupting a process was done in
https://bugs.eclipse.org/304096
> As such we had extended GDBCDIDebugger2 in which we create
> MIProcessAdapter and MISession
> And extended MISession class.
>
> Let me know if there was supposed to be any change in using
> these classes
> based on the change in the code of interrupt() ,method.
The fact that the inferiorPid is not know is a problem.
6.x seemed to allow for it, probably as a fall-back.
7.x does not allow for it. I think we should do the same as
6.x, just in case, as you have shown it is valuable.
We can add a check inferior.getInferiorPID() > 0 before trying to call
interruptInferior().
Can you open a bug about this?
Thanks
Marc
>
> Thanks & Regards,
> Nayna Jain
> Nexus Tools Development
> Bangalore, India
> Contact : 402-56859
>
>
>
> From: Marc Khouzam <marc.khouzam@xxxxxxxxxxxx>
> To: "'CDT General developers list.'" <cdt-dev@xxxxxxxxxxx>
> Cc: "'cdt-dev-bounces@xxxxxxxxxxx'" <cdt-dev-bounces@xxxxxxxxxxx>
> Date: 11/22/2012 12:40 AM
> Subject: Re: [cdt-dev] Issue with CDT CDI Debugger in Helios
> Sent by: cdt-dev-bounces@xxxxxxxxxxx
>
>
>
>
> > -----Original Message-----
> > From: cdt-dev-bounces@xxxxxxxxxxx
> > [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Nayna Jain
> > Sent: Wednesday, November 21, 2012 12:32 PM
> > To: CDT General developers list.
> > Cc: CDT General developers list.; cdt-dev-bounces@xxxxxxxxxxx
> > Subject: Re: [cdt-dev] Issue with CDT CDI Debugger in Helios
> >
> > Hi Marc,
> >
> > Here are more details of the issue.
> >
> > The error is happening in the method interrupInferior() of
> > MIProcessAdapter
> > class.
> >
> > protected void interruptInferior(MIInferior inferior) {
> > if ( fGDBProcess instanceof Spawner) {
> > Spawner gdbSpawner = (Spawner) fGDBProcess;
> > gdbSpawner.raise(inferior.getInferiorPID(), gdbSpawner.INT);
> > }
> > }
> >
> > So, as soon as it executes gdbSpawner.raise(...) method, it
> > closes both the
> > child and main eclipse without throwing any error.
> > And I found that inferior.getInferiorPID() valud is always 0.
> > Not sure what
> > it is supposed to be as such.
>
> The PID must be the process id of the program that is being
> debugged. Sending an INT signal to pid 0 sounds like it could
> have dramatic consequences. I don't even want to try it on
> my shell :)
>
> You should find out why you don't actually know the pid of
> the inferior. You could put a guard not to send the INT
> singnal if the pid is 0 and confirm that your eclipse no
> longer dies.
>
> > I found that raise() method is native method in Spawner class
> > so couldn't
> > debug further.
> >
> > Let me know if this information is helpful and if you can
> > provide on some
> > information on the crashing of the eclipse because of this.
> >
> >
> > Thanks & Regards,
> > Nayna Jain
> > Nexus Tools Development
> > Bangalore, India
> > Contact : 402-56859
> >
> >
> >
> > From: Nayna Jain/India/IBM@IBMIN
> > To: "CDT General developers list." <cdt-dev@xxxxxxxxxxx>
> > Date: 11/20/2012 07:42 PM
> > Subject: Re: [cdt-dev] Issue with CDT CDI
> Debugger in Helios
> > Sent by: cdt-dev-bounces@xxxxxxxxxxx
> >
> >
> >
> > Hi Marc,
> >
> > Thanks for the inputs.
> >
> > Sure, I will try both the steps:
> >
> > #1. Different version of JVM or Eclipse
> > #2. Isolate the problem bit more to give more details here.
> >
> > After that, shall get back to you.
> >
> >
> > Thanks & Regards,
> > Nayna Jain
> > Nexus Tools Development
> > Bangalore, India
> > Contact : 402-56859
> >
> >
> >
> > From: Marc Khouzam
> <marc.khouzam@xxxxxxxxxxxx>
> > To: "'CDT General developers list.'"
> <cdt-dev@xxxxxxxxxxx>
> > Date: 11/20/2012 07:33 PM
> > Subject: Re: [cdt-dev] Issue
> with CDT CDI
> > Debugger in Helios
> > Sent by: cdt-dev-bounces@xxxxxxxxxxx
> >
> >
> >
> >
> > > -----Original Message-----
> > > From: cdt-dev-bounces@xxxxxxxxxxx
> > > [mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of Nayna Jain
> > > Sent: Tuesday, November 20, 2012 4:40 AM
> > > To: cdt-dev@xxxxxxxxxxx
> > > Subject: [cdt-dev] Issue with CDT CDI Debugger in Helios
> > >
> > >
> > > Hi all,
> > >
> > > We had created our own debug launch using Eclipse Platform
> > and CDT CDI
> > > debugger framework.
> > >
> > > Now as we are migrating to Helios, it is mentioned that
> the default
> > > framework is DSF.
> >
> > That is true although CDI should keep working as before.
> >
> > > I have following questions -
> > >
> > > #1. I have our own debug launch created. So, we have
> > TestLaunchType in
> > > DebugConfigurations with its tabs etc. And on debug, it
> has its own
> > > ILaunchDelgate using ICDIDebugger interface. So, does it mean
> > > that it is by
> > > default using CDI interface now or do I need to do some
> > > changes that it is
> > > not calling some DSF code because DSF Is the default one
> >
> > CDI and DSF are kept separated and you should not get any of the
> > DSF code running when using the CDI launch infrastructure.
> > You can look at LocalCDILaunchDelegate to see if you are doing
> > similar things.
> >
> > > #2. My Launch configuration tries to connect to remote
> target using
> > > gdbserver running on remote system. The launch happens
> > > correctly but as
> > > soon as I click on Suspend button for any thread, eclipse
> > (both child
> > > eclipse with my plugins and my main eclipse) crashes without
> > > throwing any
> > > error on console or logs. Is it because of some mixing of
> > CDI or DSF.
> >
> > Most probably not. If it is the jvm that is crashing then I suggest
> > trying another version of Java. You could also try using the latest
> > Eclipse release (Juno SR1).
> >
> > > Can someone give me some pointers on that what changes do
> > > those users need
> > > to do who have their plugins using CDI Framework and
> > currently want to
> > > continue on that. ?
> >
> > There theoretically should not be anything to do. In
> practice though,
> > we don't actively work on CDI so maybe a bug has slipped in
> > and we didn't
> > catch it. You'd have to isolate the problem a bit more to give us a
> > better idea of what is going on.
> >
> > BR,
> >
> > Marc
> > _______________________________________________
> > cdt-dev mailing list
> > cdt-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >
> >
> >
> > _______________________________________________
> > cdt-dev mailing list
> > cdt-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >
> >
> >
> > _______________________________________________
> > cdt-dev mailing list
> > cdt-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/cdt-dev
> >
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>
>
>
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>