Re: Leaving the stack frame
Peter Veentjer <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
As far as I know the exit block always is called. I would expect that in the
bytecode a synchronised block is compiled to
monitor.enter
try{
logic in block
}finally{
monitor.exit
}
So adding logic on the monitor.exit, should be as simple as adding extra
instructions in front of the monitor.exit.
I haven't tested this btw so it could be that I'm wrong.
On Tue, May 25, 2010 at 3:12 PM, Will Morton <[email protected]> wrote:
> I'm teaching myself ASM by writing a little utility that catches
> thread deadlock scenarios before they happen. The idea is that each
> class containing synchronized blocks/methods is annotated with
> @SyncPriority(int priority), with a runtime instrumenter that monitors
> syncs and throws exceptions if high-priority syncs get called inside
> low-priority ones.
>
> For entering synchronized areas this looks fairly simple. For sync
> blocks I can scan for MONITORENTER instructions and insert some calls
> that look up the syncpriority annotation value and do the checks, and
> add the same checks before synchronized method calls.
>
> However, adding checks to threads leaving sync areas seems to be
> tougher. Normal execution flow is ok - I can add checks before
> RETURNs in sync methods, and before MONITOREXIT instructions - but
> exception handling is a problem - if an exception is thrown but not
> caught inside a synchronized method/block, the jvm unwinds the stack
> without calling RETURNS or MONITOREXITs (I think), meaning my checks
> are not notified of leaving the sync.
>
> Is there any way of inserting some code that is called reliably when a
> stack frame is left via a thrown exception?
>
> Many thanks
>
> Will
>
>
> --
> You receive this message as a subscriber of the [email protected] mailing list.
> To unsubscribe: mailto:[email protected]
> For general help: mailto:[email protected]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws
>
>
message-footer.txt
(text/plain, 238 B)
-- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help OW2 mailing lists service home page: http://www.ow2.org/wws