[vtkusers] segfault with Opengl2 in 6.3.0.rc2

Marcin Krotkiewski marcin.krotkiewski at gmail.com
Tue Sep 8 09:32:18 EDT 2015


Hi, Ken,

I have found two issues here. First, I think the vtk.sample.VTKCanvas 
example (on which I based my simplified code) might be wrong because it 
does not call frame.setVisible in EDT. From what I have seen in other 
examples frame.setVisible should be called from InvokeLater. Note that 
there are other places in Java examples where JFrame.setVisible is 
called _NOT_ from within InvokeLater. If this is an error, it might be a 
good idea to fix this.. At least for me changing this partly fixed the 
problem, i.e., the error was more difficult for me to get in the 
example, but not in my real code, where frame.setVisible is called from 
EDT  (I am _almost_ certain of this, as I call Java indirectly from 
MATLAB, and I do use MATLABs EDT framework).

Hunting the real problem, I have already mentioned that I got error from 
glewInit. Writing out the reason for the error gave me 'Missing GL 
version'. I am no expert in OpenGL, so I googled around and understood 
that this might mean that glewInit was called before OpenGL context was 
created. Due to this fact glew was not initialized and the code 
segfaulted on call to glBlendFuncSeparate in OpenGLInitState due to the 
address being NULL.

This made me experiment with vtkOpenGLRenderWindow and 
vtkXOpenGLRenderWindow. I have found that from 6.2 you have changed the 
initialization in vtkXOpenGLRenderWindow::CreateAWindow. In particular, 
you have added the if statement after '// try for 32 context'. Being 
desperate I have commented out the entire if(this->internal->fbconfig)  
statement. This worked for me, i.e., I did not manage to get a glewInit 
error after the change. Neither in my code, nor in the VTKCanvas sample.

I do not know exactly what this code does, but it might need a second 
look. From the observed behavior it was very much like a race condition: 
I was getting the glewInit 'Missing GL version' condition sometimes, but 
not always. Of course, this might mean that commenting out those lines 
does not fix anything, just hides the problem.

Let me know if you need more information - I will gladly work towards 
fixing this.

Marcin



On 09/08/2015 02:47 PM, Ken Martin wrote:
>
> Can either of you verify that the VTK C++ tests work on the system? 
> E.g.  ctest –R Mace passes?  Just trying to see if this is a general 
> system/VM issue or tied specifically to Java/OpenGL2 interactions.
>
> Thanks
>
> Ken
>
> Ken Martin PhD
>
> Chairman & CFO
>
> Kitware Inc.
>
> 28 Corporate Drive
>
> Clifton Park NY 12065
>
> ken.martin at kitware.com <mailto:ken.martin at kitware.com>
>
> 919 869-8871 (w)
>
> This communication, including all attachments, contains confidential 
> and legally privileged information, and it is intended only for the 
> use of the addressee.  Access to this email by anyone else is 
> unauthorized. If you are not the intended recipient, any disclosure, 
> copying, distribution or any action taken in reliance on it is 
> prohibited and may be unlawful. If you received this communication in 
> error please notify us immediately and destroy the original message.  
> Thank you.
>
> *From:*vtkusers [mailto:vtkusers-bounces at vtk.org 
> <mailto:vtkusers-bounces at vtk.org>] *On Behalf Of *Jens Schmidt
> *Sent:* Monday, September 7, 2015 12:53 PM
> *To:* marcin.krotkiewski; VTK Users
> *Subject:* Re: [vtkusers] segfault with Opengl2 in 6.3.0.rc2
>
> To chime in, the jvm (1.8.60) crashes on debian jessie (virtualbox) 
> when using the opengl2 rendering backend (vtk 6.3.0rc1 and rc2) and 
> the swtComponent. The old OpenGL works fine.
> When not using virtualbox's 3d accelleration the window wont even 
> open. When activating the 3d accelleration you get a window but as 
> soon as you add some actors and call update it crashes (some of the time).
> Also the jvm crashes when running everything on "real" hardware (Intel 
> HD Graphics 4600) instead of a virtual machine.
> Unfortunately i cannot access the logs right now (vacation) if this 
> still is an issue after, i happily provide any logs you desire :-)
> Just wanted to let you know, keep up the good work!
>
>
> i also have segfaults with the opengl2 backend on linux (debian 
> jessie) running on virtualbox.
>
> Am 05.09.2015 um 21:32 schrieb marcin.krotkiewski:
>
>     I keep getting segfaults when using vtk.sample.VTKCanvas with
>     OpenGL2 backend in 6.3.0.rc2. This does not happen with 6.2.0 +
>     OpenGL2, nor with the standard OpenGL backend. I use ubuntu 14.04
>     and compile with gcc 4.9.2 and jdk1.8.0_60.
>
>     On my laptop, the segfaults are 100 reproducible with mesa library
>     - some lines from glxinfo:
>
>
>     OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
>     OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.3
>     OpenGL core profile shading language version string: 3.30
>
>
>     When I use the high performance card (fglrx drivers,  Radeon HD
>     8790M) the segfaults sometimes happen, sometimes not. Lines from
>     glxinfo:
>
>
>     OpenGL vendor string: Advanced Micro Devices, Inc.
>     OpenGL renderer string: AMD Radeon HD 8790M
>     OpenGL core profile version string: 4.3.13374 Core Profile Context
>     15.20.1013
>     OpenGL core profile shading language version string: 4.40
>
>
>     I have attached a simplified java code based on VTKCanvas - In my
>     experience this one segfaults always, both with mesa, and with
>     Radeon drivers. I get the following line before vtk dies:
>
>
>     ERROR: In
>     /home/angainor/bergverk/vtk/VTK-6.3.0.rc2/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx,
>     line 412
>     vtkXOpenGLRenderWindow (0x7f110429aa90): GLEW could not be
>     initialized.
>
>
>     And this is the top of the stack reported by the dying Java VM
>
>
>     R11=0x00007fcbd8a79840: <offset 0x72840> in
>     /usr/lib/fglrx/libGL.so.1 at 0x00007fcbd8a07000
>
>     Stack: [0x00007fcbb94e4000,0x00007fcbb95e5000],
>     sp=0x00007fcbb95e1148,  free space=1012k
>     Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
>     j  vtk.vtkRenderWindow.Render_9()V+0
>     j  vtk.vtkRenderWindow.Render()V+1
>     j  vtk.vtkPanel.Render()V+164
>     j  vtk.vtkPanel.paint(Ljava/awt/Graphics;)V+1
>
>     [...]
>
>
>     It seems that this is a problem specific to 6.3.0.rc2 with
>     OpenGL2. I could not reproduce it for 6.2.0, nor when using OpenGL
>     backend. Do you know any reason why this could happen? I will be
>     happy to provide more information and help to solve this.
>
>     Cheers,
>
>     Marcin
>
>
>
>
>     _______________________________________________
>
>     Powered bywww.kitware.com <http://www.kitware.com>
>
>       
>
>     Visit other Kitware open-source projects athttp://www.kitware.com/opensource/opensource.html
>
>       
>
>     Please keep messages on-topic and check the VTK FAQ at:http://www.vtk.org/Wiki/VTK_FAQ
>
>       
>
>     Search the list archives at:http://markmail.org/search/?q=vtkusers
>
>       
>
>     Follow this link to subscribe/unsubscribe:
>
>     http://public.kitware.com/mailman/listinfo/vtkusers
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150908/8ac50c53/attachment.html>


More information about the vtkusers mailing list