Re: PATCH: Handle the cross type of debugging (context & in-context) on same function at the same time - Mailing list pgadmin-hackers

From Dave Page
Subject Re: PATCH: Handle the cross type of debugging (context & in-context) on same function at the same time
Date
Msg-id CA+OCxowy06QykV25nEBwoB-gLhi_CeHaeW6G8UD=g_UbVV3kOg@mail.gmail.com
Whole thread Raw
In response to Re: PATCH: Handle the cross type of debugging (context & in-context) on same function at the same time  (Ashesh Vashi <ashesh.vashi@enterprisedb.com>)
Responses Re: PATCH: Handle the cross type of debugging (context & in-context) on same function at the same time  (Ashesh Vashi <ashesh.vashi@enterprisedb.com>)
List pgadmin-hackers
Urgh, OK. Thanks, applied.


On Mon, Jul 8, 2013 at 4:55 PM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
On Mon, Jul 8, 2013 at 7:00 PM, Dave Page <dpage@pgadmin.org> wrote:
Hi


On Fri, Jul 5, 2013 at 8:14 AM, Ashesh Vashi <ashesh.vashi@enterprisedb.com> wrote:
Hi Dave,

During testing of the debugger, our (EnterpriseDB's) QA found an issue.
Please found the scenario:

1. Start a global (in-context) debugging session on a function (by clicking on Debugging -> Set breakpoint)
2. And, then start the direct debugging session on the same function (by clicking on Debugging -> Debug)

As the global debugging session is already waiting for this function, the debugging will start in that environment.
Now - if we try to close the direct debugging session, pgAdmin will throw an error saying pldbg_abort_target() does not exist.

Because - the direct debugging session has not yet started, we do not have the session-id in that environment.
Hence, we need to inform only the execution connection to get terminated, and that resolved the issue.

But - other problem came up, when we once again close the direct debugging session. As we're already in the closing operation,
it once again try to close the execution connection, which is not write and this time the pgAdmin became unresponsive.

In order to resolve this problem, we need to introduce the flag to let know the debugger frame that we're already in process of stopping
the session.

Please find the patch, which will resolve this issue.

This has a really weird effect:
That's true and one of the reason earlier version debugger was crashing, while debugging  a function, on which a global break point has already been setup.
As the direct session expects to raise the notice to handle the session, but it never happened.

This is a behaviour (or, bug) found during the debugger redesigning of the debugger plugin, but as it had been there from long time, I had to design the new debugger to handle this case too.
But - I missed few points, which I resolved in this patch.

- Set a global break point on a function.

- Start to direct-debug the same function.

- Enter the function parameters and start debugging.

- The execution is captured by the global session.

- Run the function to completion

- The result is displayed in the direct session.
Because the function execution has started from the direct debugging session. 
 

The attached screenshot shows what I mean (I hope).
I know.. :).. It's a bug in plugin, even we fix in plugin. This behaviour is going to be there in older version of plugin.
Hence, we should check-in this patch in pgAdmin III debugger.

In order to resolve this bug, we may also need to make changes in the server (backend). Though - I am not completely sure.
Need to investigate more and I am short of time as usual.

Please also find an updated patch attached, that fixes spelling and language issues.
Looks good to me.


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



--
--

Thanks & Regards,

Ashesh Vashi
EnterpriseDB INDIA:
Enterprise PostgreSQL Company

 

http://www.linkedin.com/in/asheshvashi




--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

pgadmin-hackers by date:

Previous
From: Dave Page
Date:
Subject: pgAdmin III commit: Avoid the most serious side effects of the debugger
Next
From: Ashesh Vashi
Date:
Subject: Re: PATCH: Handle the cross type of debugging (context & in-context) on same function at the same time