xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas DeWeese <Thomas.DeWe...@Kodak.com>
Subject Re: JSVGComponent dynamic DOM update, invokeAndWait threading issue
Date Fri, 19 Sep 2003 18:16:12 GMT
Hi George,

    So it looks like someone is modifing the document outside of the
update manager thread.  The exception is happening in the dirty
region management - the repaint is trying to collect the dirty
regions (from the update manager thread) and someone has undoubtably
added a new dirty region to the 'list' - which means that someone
modified the rendering tree outside of the update manager thread.

    Unfortunately the thread that has the exception is the 'good thread'
not the 'bad thread'.  You might try adding code to the UpdateTracker
to print a stack trace if it is called from outside the UpdateManager
thread (specifcally the changeStarted method).


George Armhold wrote:
> Thomas DeWeese wrote:
> 
>> Can you provide stack traces?  I'm surprised to see this as the
>> UpdateManager is supposed to be thread safe.
> 
> 
> Sure, here's my jws.log.  Sorry for all the extraneous junk, but I
> didn't want to remove anything potentially useful from the output.
> Note that this is with invokeLater.  Also the later exceptions can
> probably be ignored- after the ConcurrentModificationException the app
> is hopelessly confused.
> 
> Thanks again for your continued assistance with this.
> 
> 
> Presenter starting...
> tmpDir: C:\DOCUME~1\armhold\LOCALS~1\Temp\elearn.dir
> mixer: Java Sound Audio Engine, version 1.0
>    line: interface SourceDataLine supporting 8 audio formats
>    format: PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio 
> data
>    line: interface Clip supporting 8 audio formats, and buffers of 0 to 
> 4194304 bytes
>    format: PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio 
> data
> mixer: Microsoft Sound Mapper, version Unknown Version
> mixer: YAMAHA AC-XG WDM Audio, version Unknown Version
> mixer: YAMAHA AC-XG WDM Audio, version 5.10
>    line: Mono Mix source port
>    line: Stereo Mix source port
>    line: COMPACT_DISC source port
>    line: LINE_IN source port
>    line: MICROPHONE source port
> target format: PCM_SIGNED, 11025.0 Hz, 16 bit, mono, little-endian, 
> audio data
> bytesPerSample: 2
> bytesPerSecond: 22050
> Supported target types: au aif wav
> getXMLParserClassName=org.apache.xerces.parsers.SAXParser
> recordingProfile.type: whiteboard
> getScribbleGroup(): calling newScribbleGroup()
> TableOfContents: rendering 
> file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
> rasterizing URL: 
> file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
> img data len: 206
> loading: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
> ScribbleComponent.beginRecording()
> controls:
> WavFile::createNewFile(): open wavFile=C:\Documents and 
> Settings\armhold\Desktop\timing tests\New Folder\audio.wav, wavFileLen=0
> lineBufferSize: 11024
> buf size: 44096
> svgLoadEventDispatchStarted
> managerStarted
> beginRecording
> mousePressed: 
> edu.rutgers.elearning.scribble.ScribbleComponent[,115,0,809x500,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=768,height=480]]

> 
> mouseReleased: 
> edu.rutgers.elearning.scribble.ScribbleComponent[,115,0,809x500,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=768,height=480]]

> 
> next button pressed: 
> java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Next,when=1063929293658,modifiers=Button1]

> on 
> javax.swing.JButton[,75,0,55x23,layout=javax.swing.OverlayLayout,alignmentX=0.0,alignmentY=0.5,border=com.sun.java.swing.plaf.windows.XPStyle$XPEmptyBorder@1438dbe,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Next,defaultCapable=true]

> 
> java.util.ConcurrentModificationException
>    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
>    at java.util.HashMap$KeyIterator.next(Unknown Source)
>    at org.apache.batik.gvt.UpdateTracker.getDirtyAreas(Unknown Source)
>    at org.apache.batik.bridge.UpdateManager.repaint(Unknown Source)
>    at org.apache.batik.bridge.UpdateManager.runnableInvoked(Unknown Source)
>    at org.apache.batik.util.RunnableQueue.runnableInvoked(Unknown Source)
>    at org.apache.batik.util.RunnableQueue.run(Unknown Source)
>    at java.lang.Thread.run(Unknown Source)
> getScribbleGroup(): calling newScribbleGroup()
> loading: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg
> TableOfContents: rendering 
> file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg
> rasterizing URL: 
> file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg



---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Mime
View raw message