Problem with Debugger & Oracle EXDI in 7.4.1

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problem with Debugger & Oracle EXDI in 7.4.1

Mark Plas

There appears to be a problem with the debugger in vw 7.4.1.

 

This is what I do:

 

I open a vanilla 7.4.1 image.

I load the Oracle EXDI parcel

I accept the following class method on an arbitrary class (ActionButton class in my example):

 

doInTransaction: aBlock

            | connection |

            connection := OracleConnection new.

            connection username: 'username'.

            connection environment: 'database’.

            connection connect: 'password'.

            connection begin.

            [aBlock ensure: [connection commit]] ensure: [connection disconnect]

 

Then I perform the following piece of Smalltalk code:

 

 

            self halt.

self doInTransaction: [Transcript show: ‘test’]

 

Beause of the halt the debugger opens and I start stepping through the code by using the F6 key (=Step). After pressing it three times, I end up at the end of the block. If I then step one more time I get an exception on OracleNTInterface saying:

 

            unsupported operation

 

I get this error only when I use the debugger to step through the code.

It seems that debugger messes something up if you try to ‘step out of a block’. This doesn’t occur in a VW 7.3.1 image.

Perhaps it has something to do with ExternalInterface subclasses & simulation of byte code execution in the debugger?

 

Has anyone encountered this before? (And is there a fix for it?)

 

Thanks in advance,

Mark

 

The stack trace is here:

 

Unhandled exception: unsupported operation

OracleNTInterface(ExternalInterface)>>externalAccessFailedWith:

OracleNTInterface(OracleInterface)>>OCITransCommit:with:with:

ExternalMethod>>unlinkedCall:arguments:

OracleConnection>>commitExternal

optimized [] in [] in ExternalDatabaseTransaction>>finishTransaction:method:

BlockClosure>>on:do:

optimized [] in ExternalDatabaseTransaction>>finishTransaction:method:

optimized [] in [] in ExternalDatabaseFramework>>participantsDo:

WeakArray(SequenceableCollection)>>do:

optimized [] in ExternalDatabaseFramework>>participantsDo:

BlockClosure>>ensure:

optimized [] in RecursionLock>>critical:

BlockClosure>>ensure:

Semaphore>>critical:

RecursionLock>>critical:

OracleTransaction(ExternalDatabaseFramework)>>participantsDo:

OracleTransaction(ExternalDatabaseTransaction)>>finishTransaction:method:

OracleTransaction(ExternalDatabaseTransaction)>>commit

OracleConnection(ExternalDatabaseConnection)>>commit

optimized [] in [] in ActionButton class>>doInTransaction:

BlockClosure>>valueAsUnwindBlockFrom:

BlockClosure>>ensure:

optimized [] in ActionButton class>>doInTransaction:

BlockClosure>>ensure:

ActionButton class>>doInTransaction:

ActionButton class>>unboundMethod

ActionButton class(Object)>>performMethod:arguments:

ActionButton class(Object)>>performMethod:

TextEditorController(ParagraphEditor)>>evaluateCompiled:

 

Reply | Threaded
Open this post in threaded view
|

Re: Problem with Debugger & Oracle EXDI in 7.4.1

Alan Knight-2
Yes, there seems to have been some kind of a regression with respect to stepping and DLL/CC methods in 7.4 in general. AR 52122 looks to be the relevant thing. I don't know of a workaround at the moment.

At 08:02 AM 4/2/2007, Mark Plas wrote:
There appears to be a problem with the debugger in vw 7.4.1.
 
This is what I do:
 
I open a vanilla 7.4.1 image.
I load the Oracle EXDI parcel
I accept the following class method on an arbitrary class (ActionButton class in my example):
 
doInTransaction: aBlock
            | connection |
            connection := OracleConnection new.
            connection username: 'username'.
            connection environment: 'database’.
            connection connect: 'password'.
            connection begin.
            [aBlock ensure: [connection commit]] ensure: [connection disconnect]
 
Then I perform the following piece of Smalltalk code:
 
 
            self halt.
self doInTransaction: [Transcript show: ‘test’]
 
Beause of the halt the debugger opens and I start stepping through the code by using the F6 key (=Step). After pressing it three times, I end up at the end of the block. If I then step one more time I get an exception on OracleNTInterface saying:
 
            unsupported operation
 
I get this error only when I use the debugger to step through the code.
It seems that debugger messes something up if you try to ‘step out of a block’. This doesn’t occur in a VW 7.3.1 image.
Perhaps it has something to do with ExternalInterface subclasses & simulation of byte code execution in the debugger?
 
Has anyone encountered this before? (And is there a fix for it?)
 
Thanks in advance,
Mark
 
The stack trace is here:
 
Unhandled exception: unsupported operation
OracleNTInterface(ExternalInterface)>>externalAccessFailedWith:
OracleNTInterface(OracleInterface)>>OCITransCommit:with:with:
ExternalMethod>>unlinkedCall:arguments:
OracleConnection>>commitExternal
optimized [] in [] in ExternalDatabaseTransaction>>finishTransaction:method:
BlockClosure>>on:do:
optimized [] in ExternalDatabaseTransaction>>finishTransaction:method:
optimized [] in [] in ExternalDatabaseFramework>>participantsDo:
WeakArray(SequenceableCollection)>>do:
optimized [] in ExternalDatabaseFramework>>participantsDo:
BlockClosure>>ensure:
optimized [] in RecursionLock>>critical:
BlockClosure>>ensure:
Semaphore>>critical:
RecursionLock>>critical:
OracleTransaction(ExternalDatabaseFramework)>>participantsDo:
OracleTransaction(ExternalDatabaseTransaction)>>finishTransaction:method:
OracleTransaction(ExternalDatabaseTransaction)>>commit
OracleConnection(ExternalDatabaseConnection)>>commit
optimized [] in [] in ActionButton class>>doInTransaction:
BlockClosure>>valueAsUnwindBlockFrom:
BlockClosure>>ensure:
optimized [] in ActionButton class>>doInTransaction:
BlockClosure>>ensure:
ActionButton class>>doInTransaction:
ActionButton class>>unboundMethod
ActionButton class(Object)>>performMethod:arguments:
ActionButton class(Object)>>performMethod:
TextEditorController(ParagraphEditor)>>evaluateCompiled:
 

--
Alan Knight [|], Cincom Smalltalk Development

"The Static Typing Philosophy: Make it fast. Make it right. Make it run." - Niall Ross