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不同。

目录
相关文章
|
4月前
|
传感器 安全 文件存储
CrowdStrike更新导致全球Windows系统大规模崩溃,CEO致歉并详解修复措施
CrowdStrike更新导致全球Windows系统大规模崩溃,CEO致歉并详解修复措施
CrowdStrike更新导致全球Windows系统大规模崩溃,CEO致歉并详解修复措施
|
4月前
|
Web App开发 监控 网络协议
在Linux中,当用户反馈网站访问慢,如何处理?
在Linux中,当用户反馈网站访问慢,如何处理?
|
4月前
|
缓存 监控 安全
在Linux中,如何排查系统崩溃问题?
在Linux中,如何排查系统崩溃问题?
|
安全 数据库 Windows
记一次因误操作系统崩溃修复过程
记一次因误操作系统崩溃修复过程
160 0
|
NoSQL Ubuntu
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
J3D在UOS+KIRIN崩溃2:深层原因分析
J3D在UOS+KIRIN崩溃2:深层原因分析
72 0
gstreamer/deepstream崩溃记录及分析
gstreamer/deepstream崩溃记录及分析
197 0
|
安全 Linux Windows
英特尔放出Linux微代码以修复Meltdown和Spectre漏洞
近日,Intel发布了最新版本的Linux处理器微代码数据文件,而这个补丁文件能够修复Intel CPU中的Spectre以及Meltdown漏洞。广大用户可以使用微代码文件来修复操作系统中目前已知的Intel CPU安全漏洞,而无需在计算机中执行BIOS更新。
1617 0