aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/com
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1107: Add missing unit testSven Gothel2014-12-071-0/+61
|
* Bug 1107 - Refine PixelFormat, GLPixelBuffer and ↵Sven Gothel2014-12-0610-164/+508
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DirectDataBufferInt/BufferedImageInt - PixelFormat Refine definition allowing complete format conversion by its attributes instead of static 'knowledge'. - PixelFormat has_a *new* PixelFormat.Composition - PixelFormat.Composition contains all pixel component layout information as required for inspection and conversion. Component names are enumerated via PixelFormat.CType. - PixelFormatUtil.convert(..) utilizes generic conversion based on PixelFormat.Composition rather static type mapping. However, a int32 RGBA static conversion is still supported for performance. Utilizes Bitstream for varying pixel component bit-width. - Complete w/ hashCode() and equals(..) - GLPixelBuffer - Take 'pack' mode into account when determine GLPixelAttributes, i.e. on GLES pack=true (e.g. glReadPixel) only RGBA is guaranteed to work. Hence querying GLPixelAttributes requires the GLProfile, PixelFormat and pack mode. - Complete GLPixelAttributes conversions from PixelFormat or GL format/data-type, while taking GL data-type into account, as well as pack-mode. - Complete w/ hashCode() and equals(..) - SingletonGLPixelBufferProvider queries singleton GLPixelBuffer via - PixelFormat.Composition hostPixelComp, - GLPixelAttributes pixelAttributes, - boolean pack which comprise a unique key, allowing the implementation to utilize a hash map. This is implemented in AWTSingletonGLPixelBufferProvider. This allows distinct singleton GLPixelBuffer for different host PixelFormat (conversion) and GLPixelAttributes (depending on GLProfile). - Removes field 'componentCount' which was 'hacked in' to pass information about an optional host memory layout. Implementations utilizing conversion, e.g. AWTGLPixelBuffer, can implement GLPixelBufferProvider's 'PixelFormat.Composition getHostPixelComp(final GLProfile glp, final int componentCount)' and manage such implementation details, see use-case GLJPanel. - DirectDataBufferInt/BufferedImageInt: Expose underlying NIO ByteBuffer - AWTMisc.createCursor(..) uses DirectDataBufferInt.BufferedImageInt exposed NIO ByteBuffer, allowing to use generic PixelFormatUtil.convert(..).
* Use ExceptionUtils.dumpStack(..) instead of Thread.dumpStack()Sven Gothel2014-10-262-4/+6
|
* Bug 1093 - NEWT PointerIcon swizzled on X11 and OSX; WindowIcon swizzled on ↵Sven Gothel2014-10-102-10/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OSX ([R] -> [B]) Following mistakes were made in native PixelFormat for PointerIcon and WindowIcon: PointerIcon: X11: RGBA8888 -> BGRA8888 OSX: BGRA8888 -> RGBA8888 WindowIcon: OSX: BGRA8888 -> RGBA8888 Test case: TestWindowAndPointerIconNEWT (requires visual validation) +++ Summary: PointerIcon: BGRA8888: X11, Win32 RGBA8888: OSX WindowIcon: BGRA8888: X11, Win32 RGBA8888: OSX +++ Reported by 'LT' <http://forum.jogamp.org/Mac-OSX-newt-pointer-and-window-icon-displays-incorrectly-tp4033294.html>
* Graph Font: Fix API doc (parameter) ; GPUUISceneGLListener0A forward ↵Sven Gothel2014-10-091-4/+2
| | | | FontFactory.get(..) exception, we cannot recover in this demo
* Newt ScreenMode Tests: Return XRandR error-code, allowing fall-back ↵Sven Gothel2014-10-094-54/+78
| | | | (OpenIndiana has issues); Min delay 4s before next setScreenMode(..)
* Newt Screen viewport in windows units: Add missing setup in overriden ↵Sven Gothel2014-10-091-0/+18
| | | | calcVirtualScreenOriginAndSize(..) method (duplicate pixel unit)
* TestLandscapeES2NewtCanvasAWT: Enforce landscape shader to be ↵Sven Gothel2014-10-082-6/+10
| | | | compiled/linked upfront AWT migration, since it takes a long time on Mesa/AMD
* TestTessellationShader01GL4NEWT: Add robustness, i.e. case where ↵Sven Gothel2014-10-083-18/+64
| | | | tessellation failed to compile/link (on unsupported platforms)
* Unit Tests: Increase minimum manual set timeout to 10sSven Gothel2014-10-085-9/+9
|
* Bug 1088: Add GLRendererQuirks.NeedSharedObjectSync; Tests: Synchronize GL ↵Sven Gothel2014-10-085-31/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | objects if GLRendererQuirks.NeedSharedObjectSync is set. GLSharedContextSetter#synchronization GL Object Synchronization Usually synchronization of shared GL objects should not be required, if the shared GL objects are created and immutable before concurrent usage. However, using drivers exposing GLRendererQuirks.NeedSharedObjectSync always require the user to synchronize access of shared GL objects. Synchronization can be avoided if accessing the shared GL objects exclusively via a queue or com.jogamp.common.util.Ringbuffer, see GLMediaPlayerImpl as an example. +++ GLRendererQuirks.NeedSharedObjectSync is set for all OSX versions +++ Handle GLRendererQuirks.NeedSharedObjectSync in user code! +++ All shared context tests passed on OSX 10.9.5, and GNU/Linux w/ Nvidia + Mesa/AMD driver.
* Bug 1088: Shared Gears* Unit Tests: Align all 3 Gears* implementation to use ↵Sven Gothel2014-10-0811-110/+141
| | | | a shared Gears* object
* SingletonTestCase -> SingletonJunitCase: Adapt to GlueGen commit ↵Sven Gothel2014-10-032-4/+4
| | | | 773d96584b4edc13eb6ff689eaf891aab09aa5a4
* UITestCase now extends GlueGen's test-util SingletonTestCaseSven Gothel2014-10-032-83/+6
|
* Bug 1081: Fix GLJPanel Regression: Honor pre-init reshape-size at ↵Sven Gothel2014-10-012-40/+335
| | | | | | | | | | | | | | initializeBackendImpl() Commit 84f367a73c5b16dcebfd877e82e1c2cb90ae74ce removed utilization of reshape-size in case panel-size is valid, even if a reshape event happened in between: - addNotify - paintComponent initializeBackendImpl() includes now uses reshape-size IFF handleReshape is set. Before it was using reshape-size only if panel-size was invalid. TestAWT03GLJPanelRecreate01 covers this issue.
* Refine Graph/Font InputStream Capabilities (commit ↵Sven Gothel2014-09-303-10/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 628509b39ea7c16210315d191860511d6be4aa69) FontFactory Remove: - Font get(final URLConnection conn) - Font get(final InputStream stream) FontFactory Add: - [1] Font get(final InputStream stream, final int streamLen, final boolean closeStream) - Direct usage of font InputStream w/ determined length, may instantiate BufferedInputStream in case given stream doesn't support mark/reset! - [2] Font get(final InputStream stream, final boolean closeStream) - Copy font InputStream w/o determined length, resulting in BufferedInputStream supporting mark/reset! Security Related: - Only perform priviledged code on determine InputStream, _not_ when parsing the font stream itself! - Hence PrivilegedAction only happens in FontFactory's InputStream preparation. Misc: - Use Uri class
* Fix future compatibility issues (analog to b22x commit ↵Sven Gothel2014-09-242-14/+8
| | | | | | | | | | | | | | 546f9b1a03c46b63f8bb18c1b8e2c80a8b66cf7c) - GLFBODrawable: - Remove FBOMODE_DEFAULT - GLRendererQuirks: - Remove COUNT - Add getCount() method for future compatibility. - Animator - Hide local fields (private or package private)
* TestInitConcurrent*NEWT: Decorated tests w/ GLProfile.shutdown(), ensuring ↵Sven Gothel2014-09-203-1/+19
| | | | implicit GLProfile.initSingleton() is being tested
* TestVersionSemanticsNOUI: Compare V221 against current V23x, no special excludesSven Gothel2014-09-201-4/+4
|
* TestVersionSemanticsNOUI: V221 -> V222 Add exception for ↵Sven Gothel2014-09-201-0/+1
| | | | GLFBODrawable.FBOMODE_DEFAULT
* Add GLJPanelsAndGLCanvasDemoGL2Applet: Simple applet test for GLJPanel/GL2 ↵Sven Gothel2014-09-204-52/+271
| | | | testing (offscreen, ..); Clean up GL2 Gears and Teapot state enable/disable
* FBObject: Fix depth- and stencil bit count selection for attachRenderbuffer(..);Sven Gothel2014-09-206-26/+56
| | | | | | | | | | | | | | | - Fix depth- and stencil bit count selection for attachRenderbuffer(..) - Add generic values: DEFAULT_BITS, REQUESTED_BITS, CHOSEN_BITS, MAXIMUM_BITS - Refactor depth- and stencil bit-count -> format into own method - Allow depth- and stencil bit-count select a higher bit-count if required (fix) - GLFBODrawable.FBOMODE_USE_DEPTH is deprecated, using GLCapabilities.[get|set]DepthBits(..) - It was an oversight to introduce the bit flag in the first place, since we should have used the capabilities depth bit-count - Graph Test: GLEventListenerButton shall use requested capabilities for FBO drawable.
* TestVersionSemanticsNOUI: Enable test V220->V221 and V221->V222 (w/ 2 extra ↵Sven Gothel2014-09-201-13/+25
| | | | | | | | | | | | | | | exclusions) Enable tests: - V220->V221 - V221->V222 (w/ 2 extra exclusions) - GLRendererQuirks COUNT has been increased (-> use a method, FIXME) - Animator pauseIssued is volatile now Conflicts: src/test/com/jogamp/opengl/test/junit/jogl/acore/TestVersionSemanticsNOUI.java
* TestGearsES2GLJPanelAWT: Update frame title (awt-size, pixel-size) for ↵Sven Gothel2014-09-201-0/+15
| | | | GLEventListener.reshape(..)
* FBObject: Simplify API (init/reset); Only issue automatic ↵Sven Gothel2014-09-204-24/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | resetSamplingSink(..) if required; Fix resetSamplingSink(..), isBound(), .. - Simplify API (init/reset) - use new unique methods for init and reset: - void init(final GL gl, final int newWidth, final int newHeight, final int newSamples) - does not issue resetSamplingSink(..) - boolean reset(final GL gl, final int newWidth, final int newHeight, final int newSamples) - always issues resetSamplingSink(..) - deprecated dual-use (init/reset): - boolean reset(final GL gl, final int newWidth, final int newHeight) - boolean reset(final GL gl, int newWidth, int newHeight, int newSamples, final boolean resetSamplingSink) - reset(..) no more creates a dummy 'samplingSink' instance if sampling > 0, left up to resetSamplingSink(..) - Track 'modified' state of FBObject, if size, format or any attachment has been changed since last - use(..) - syncSamplingSink(..) - resetSamplingSink(..) - Only issue resetSamplingSink(..) from syncSamplingSink(..)/use(..) if 'modified == true' +++ - Fix setSamplingSink(..), i.e. samplingSink state handling: - Validated whether given samplingSink is initialized, throws Exception if not. - Fix resetSamplingSink(..) - resets the bound state, i.e. leaves it untouched - also unbinds the samplingSink - sampleSinkDepthStencilMismatch() also returns true if this.depth/stencil == null, but samplingSink is not. - Newly created colorbuffer/-texture matches exiting colorbuffer's internal-format, if exists. - Using simplified resetSizeImpl(..) for size mismatch - Simplified samplingColorSink init check - Fix isBound() was: 'bound = bound && fbName != gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)' fix: 'bound = bound && fbName == gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)' - Fix detachRenderbuffer(..) validates whether detachment was successful, similar to detachColorbuffer(..)
* FBOobject GLEL Tests: Remove redundant detachAllColorbuffer(gl) for init callSven Gothel2014-09-192-18/+6
|
* Tests: Util NEWTGLContext: Utilize common createWindow(..) function, switch ↵Sven Gothel2014-09-149-62/+30
| | | | | | | | | | on-/offscreen via capabilities (Fixes TestTextRendererNEWTBugXXXX) TestTextRendererNEWTBugXXXX used NEWTGLContext.createOffscreenWindow(..) which created an pbuffer based offscreen not capable of ES2 rendering etc. Offscreen tests use NEWTGLContext.createWindow(..) w/ caps.setOnscreen(false), hence favor FBO instances.
* GLJPanel: Allow reconfiguration of offscreen's GLCapabilitiesImmutableSven Gothel2014-09-142-0/+70
| | | | | | | | | | | | | | | Offscreen's GLCapabilitiesImmutable reconfiguration will dispose a realized instance and issues recreation via initializeBackendImpl() immedietly. Implementation performs operation on AWT-EDT. Tests: - TestGearsES2GLJPanelAWT: - Toggle MSAA via 'm' - TestGearsGLJPanelAWT: - Toggle MSAA via 'm' - Toggle Bitmap via 'b'
* Gears* Demos: Spin at same speed (0.5f tan per frame) ; GearsES2: Bring back ↵Sven Gothel2014-09-144-5/+12
| | | | default Z values, allow Z customization (StereoDemo01)
* TestVersionSemanticsNOUI: v2.3.0 is not backward compatible w/ 2.2.*Sven Gothel2014-09-091-2/+2
|
* Bug 1063: Uri adoptionSven Gothel2014-09-0810-69/+63
| | | | | | | | | - ShaderCode: - Using Uri - Also encode the rel. 'includeFile' (was missing earlier) - GLMediaPlayer - Exposes Uri in API, removed URI
* Bug 1060 - Add GLProfile.isInitialized(): Returns true if JOGL has been ↵Sven Gothel2014-09-031-0/+11
| | | | initialized
* Bug 1059 _and_ version-compat breackage of commit ↵Sven Gothel2014-09-031-1/+14
| | | | | | | | | | | c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983 Commit c78ceb642d0ef5bb5bf27ff8ff1495175ee2e983 changed: - public static final String GL4 = "GL4"; + public static final String GL4 = "GL4".intern(); which is identified by semver as incompatible, due to Bug 1059 (no more inlining of interned string references).
* Bug 1043 - Add Tessellation Control and Evaluation Shader SupportSven Gothel2014-09-027-0/+488
| | | | | - Add GL4.GL_TESS_CONTROL_SHADER and GL4.GL_TESS_EVALUATION_SHADER support for GLSL util class ShaderCode - Add unit test TestTessellationShader01GL4NEWT, testing TessellationShader01aGL4 and TessellationShader01bGL4
* Bug1044: Offscreen drawable AWT/ImageIO results in black image on ↵Sven Gothel2014-09-021-0/+106
| | | | | | | OSX/[Java7-Java8] - Using our PNGJ writer results in proper images (RGB and RGBA) on all platforms - Seems to be a bug w/ AWT/ImageIO
* Bug 1048: Add unit tests demonstrating multiple NewtCanvasAWT instances are ↵Sven Gothel2014-09-023-69/+389
| | | | | | | | | | | | | | working Enhance following performance test cases, adding NewtCanvasAWT, beside GLCanvas and GLJPanel, 25 instances: com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit01AWT com.jogamp.opengl.test.junit.jogl.perf.TestPerf001GLJPanelInit02AWT Adding simple com.jogamp.opengl.test.junit.newt.TestMultipleNewtCanvasAWT w/ two instances. Manually tested on GNU/Linux and OSX (java7 and java8).
* Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 ↵Sven Gothel2014-09-021-9/+20
| | | | | | | | implementation - Part 2/2 - TestGLProfile01NEWT: Allow ctx.isGLES3Compatible() and hence GL4ES3 on GL3bc and GL3 - GLProfile: Remove GL4ES3 mapping using GL3bc and GL3, only GL4bc, GL4 and GLES3 are allowed in static mapping.
* Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 ↵Sven Gothel2014-09-021-208/+753
| | | | | | | | | | | | | | | | | | implementation - Part 1/2 Test enhancements triggering issue 'Bug 1052 - OpenGL ES 3.0 Mesa 10.1.3 Caught GLException: Not a GL4ES3 implementation' - TestGLProfile01NEWT: Complete GLProfile and GL-object and GLContext validation - On OpenGL ES 3.0 Mesa 10.1.4 it produces: 1) test06GLProfileGL4ES3(com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT) javax.media.opengl.GLException: GL4ES3 is neither GL4bc, GL4 nor GLES3 at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateGLProfileGL4ES3(TestGLProfile01NEWT.java:531) at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.validateOffline(TestGLProfile01NEWT.java:708) at com.jogamp.opengl.test.junit.jogl.acore.TestGLProfile01NEWT.test06GLProfileGL4ES3(TestGLProfile01NEWT.java:948) i.e. wrong mapping of request GL4ES3 -> GL3
* TestSharedContextNewtAWTBug523: Fix junit usage ..Sven Gothel2014-08-311-14/+1
|
* TestGLReadBuffer01GLJPanelAWT: Add keyFrame-wait after initSven Gothel2014-08-311-0/+3
|
* Refine test cases for synchronous GLAutoDrawable display, swap-buffer and ↵Sven Gothel2014-08-303-0/+64
| | | | | | read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020 .. add Platform and GL info !
* Refine test cases for synchronous GLAutoDrawable display, swap-buffer and ↵Sven Gothel2014-08-306-174/+195
| | | | read-pixels (non-MSAA and MSAA) Bugs: 841, 975 and 1020
* Bug 1055 - Access and query shared master GLContext in a deterministic ↵Sven Gothel2014-08-3010-163/+381
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fashion ; Don't use arbitrary shared context as 'master'. GLContext* passes the shared-master to GLContextShareSet, which only creates a sets of shared contexts without differentiating the master context. GLContext*'s shared-slave attempts to lock the realized shared-master's surface at creation. Currently only an arbitrary shared context is selected due to the missing 'master' identity. The arbitrary shared context's surface is locked and its shared context handle used to create the slave context. Lacking of using the user given shared-master can lead to deadlock situations - and locking a 'wrong' surface. +++ The patch: - Allows query the user given shared-master! - Use the user given shared-master for locking and it's context handle for the slave's creation. - The shared-context mapping maps each shared-master to a shared-slave within one shared-context-set, allowing deterministic and individual shared-master queries.
* TestVersionSemantics: BACKWARD_COMPATIBLE_USER current vs 2.2.0Sven Gothel2014-08-281-5/+10
|
* Graph/Text: Prepare unit tests for font rendering validation (WIP)Sven Gothel2014-08-281-2/+2
|
* Graph/Text: Prepare unit tests for font rendering validation (WIP)Sven Gothel2014-08-2816-24/+425
|
* Bug 1021: Refine Stereo API; Fix GenericStereoDevice; Fix StereoDemo01 for ↵Sven Gothel2014-08-072-23/+44
| | | | | | | | | | | | | | | | | | | | movie playback and OSX usage (HiDPI surfaceSize) - StereoDevice.DeviceType: Add API doc - StereoDevice: Add getFactory() - GenericStereoDevice - Use common static vars for configurations for simplicity - Fix createRenderer(..)'s eyeViewport in case no post-processing is performed, i.e. needs viewport X offset. - StereoDemo01 - Use 'movie' eyePosition instead of default if: - using a movie player _and_ using lenses! - Fix NEWT window pixel-unit size after window creation!
* Bug 1039: Rename GLAnimatorControl.UncaughtGLAnimatorExceptionHandler -> ↵Sven Gothel2014-08-061-4/+4
| | | | GLAnimatorControl.UncaughtExceptionHandler
* Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while ↵Sven Gothel2014-08-061-41/+218
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GLAutoDrawable processing [part-3] Add GLAnimatorControl.UncaughtGLAnimatorExceptionHandler interface to optionally handle uncaught exception within an animator thread by the user. Implementation also requires to flush all enqueued GLRunnable instances via GLAutoDrawable.invoked(..) in case such exception occurs. Hence 'GLAutoDrawable.flushGLRunnables()' has been added. Only subsequent exceptions, which cannot be thrown are dumped to System.stderr. +++ Handling of exceptions during dispose() Exception in NEWT's disposeGL*() are also caught and re-thrown after the NEWT window has been destroyed in WindowImpl.destroyAction: - GLEventListener.dispose(..) - GLDrawableHelper.disposeAllGLEventListener(..) - GLDrawableHelper.disposeGL(..) - GLAutoDrawableBase.destroyImplInLock(..) - GLWindow.GLLifecycleHook.destroyActionInLock(..) - WindowImpl.destroyAction on NEWT-EDT - WindowImpl.destroy Further more, exceptions occuring in native windowing toolkit triggered destroy() are ignored: - GLAutoDrawableBase.defaultWindowDestroyNotifyOp(..) It has to be seen whether such exception handling for dispose() shall be added to AWT/SWT. +++ TestGLException01NEWT covers all GLEventListener exception cases on-thread and off-thread (via animator). +++
* Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while ↵Sven Gothel2014-07-311-0/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GLAutoDrawable processing [part-1] Implements Specification as described on 'Bug 1039 Comment 1' <https://jogamp.org/bugzilla/show_bug.cgi?id=1039#c1> TODO: - Offthread exception handler ++++ GLDrawableHelper is used in all GLAutoDrawable implementations and for most operations. GLAutoDrawable/GLDrawableHelper invoke(..) method: - invoke(..) forwards a caught exception - if blocking, it forwards an exception happening within the passed GLRunnable(s). Here the exception is caught, printed and then thrown by invoke itself. - if non-blocking, an exception happening within the passed GLRunnable(s) will be thrown in the thread issuing it's execution, i.e. display() call. Here the exception is not caught and simply thrown by the GLRunnable. GLAutoDrawable.destroy() -> GLDrawableHelper.disposeGL(..) method: - disposeAllGLEventListener() being invoked by disposeGL(..), catches exception thrown by GLEventListener.dispose(..) and prints them to stderr. The first caught exception is re-thrown at the end as an GLException. - disposeGL() catches re-thrown GLException by disposeAllGLEventListener() for GLEventListener.dispose(..) and re-throws it when operation is complete. - disposeGL() catches an exception thrown at context destruction or release and re-throws it when operation is complete. An early exception at context.makeCurrent() is _not_ caught, since it is the first operation which simply shall unwind the stack. GLAutoDrawable.display() -> GLDrawableHelper.invokeGLImpl(..) method: - invokeGLImpl(..) for display() follows disposeGL() mechanism, i.e. it catches exception thrown at GLEventListener's init(..), reshape(..) and display(..) methods and re-throws it when operation is complete. It also catches an exception thrown at context release and re-throws it when operation is complete. An early exception at context.makeCurrent() is _not_ caught, since it is the first operation which simply shall unwind the stack. ++++ None of the above thrown exception shall be caught and suppressed on the caller side. If an operation must be completed while an exception is caught, it shall be cached and re-thrown after the operations. In case multiple exception at multiple places are caught within an operation, they all shall be cached and the first one shall be re-thrown. In case of multiple exception from the same place, i.e. a loop through all GLEventListener, the first shall be cached and re-thrown after operation is completed. It has to be determined, whether we like to dump the exceptions, especially the ones who get suppressed in case of multiple exceptions.