J3D在UOS+KIRIN崩溃1:直接原因分析

简介: J3D在UOS+KIRIN崩溃1:直接原因分析

代码

 

System.out.println(new VirtualUniverse());
      GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
      System.out.println("template="+template);
      //X11GraphicsDevice
      GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
      System.out.println("device="+device);
      sun.awt.X11GraphicsDevice x11device = (sun.awt.X11GraphicsDevice)device;
      GraphicsConfiguration[]  configs = x11device.getConfigurations();
      config = template.getBestConfiguration(configs);
         System.out.println(config);

javax.media.j3d.JoglGraphicsConfiguration

JoglPipeline

上述类,仅在getBestConfiguration()新建


Renderer(继承自J3dThread)

doWork()调用。


崩溃原因:

JoglPipeline.getBestConfiguration(),大约8730处开始:


       

Frame f = new Frame(device.getDefaultConfiguration());
            f.setUndecorated(true);
            f.setLayout(new BorderLayout());
            capturer = new CapabilitiesCapturer();
            try {
                awtConfig = createAwtGraphicsConfiguration(caps, capturer, screen);
                QueryCanvas canvas = new QueryCanvas(awtConfig, capturer);
                f.add(canvas, BorderLayout.CENTER);
                f.setSize(MIN_FRAME_SIZE, MIN_FRAME_SIZE);
                f.setVisible(true);

在setVisible()的时候,嗝屁了。


JoglPipeline$QueryCanvas.addNotify()

glDrawable.setRealized(true);


GLDrawableImpl.setRealized()

类不同:

正确:jogamp.opengl.x11.glx.X11OnscreenGLXDrawable(两层继承:X11GLXDrawable, GLDrawableImpl) implements GLDrawable


错误:jogamp.opengl.egl.EGLDrawable(继承GLDrawableImpl)


到了这里,直接原因清楚了。之后就是研究,为什么glDrawable不同。

目录
相关文章
|
9月前
|
安全 Unix Linux
操作系统紧急故障修复常见有效方案
操作系统是计算机系统的核心软件之一,如果操作系统出现了紧急故障,将会引起系统的宕机,严重影响业务系统的可用性。因此,对操作系统的紧急故障进行修复是必不可少的。本文将介绍操作系统紧急故障的常见有效方案。
151 1
|
2月前
|
监控 Linux Shell
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
Linux 进程问题调查探秘:分析和排查频繁创建进程问题
61 0
|
10月前
|
安全 数据库 Windows
记一次因误操作系统崩溃修复过程
记一次因误操作系统崩溃修复过程
127 0
|
NoSQL Ubuntu
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
J3D在UOS+KIRIN崩溃2:深层原因分析
J3D在UOS+KIRIN崩溃2:深层原因分析
59 0