PyCharm 2026.1.2 闪退问题排查与解决(Win10 + GTX 1660)
从 PyCharm 2020.1 升级到 2026.1 后打开即闪退,本文记录完整的排查过程、根因分析与多种解决方案。
一、问题背景
将本地开发环境从 PyCharm 2020.1 升级到 PyCharm 2026.1.2 后,双击启动图标后程序闪退,无任何错误提示弹窗。
既然卸载了旧版本还出现兼容性问题,说明问题大概率不在配置残留,而是新版渲染栈与当前软硬件环境的兼容问题。
二、环境信息
| 项目 | 信息 |
|---|---|
| 操作系统 | Windows 10 64-bit (Build 18362 / Version 1909) |
| CPU | Intel Core i5-9400F @ 2.90GHz(6 核,无核显) |
| 内存 | 16 GB |
| 显卡 | NVIDIA GeForce GTX 1660 |
| 显卡驱动 | 31.0.15.2647(发布日期:2022/10/25) |
| 数字签名方 | Microsoft Windows Hardware Compatibility Publisher |
| 原 PyCharm | 2020.1(JBR 11 + 旧 Swing 渲染栈) |
| 目标 PyCharm | 2026.1.2(JBR 25 + Skia 渲染栈) |
⚠️ 驱动隐患 :当前驱动是 Windows Update 推送的兼容版,不是 NVIDIA 官方 WHQL 驱动。从 2022 年 10 月至今近 4 年未更新,期间 NVIDIA 推送了几百个新版本。
三、故障现象
- 双击
pycharm64.exe,出现启动闪屏后立即退出 - 进程崩溃后未生成 IDE 自带的错误对话框
- 在用户目录下生成
java_error_in_pycharm_<pid>.log文件,包含完整 JVM 崩溃信息
四、日志分析
4.1 关键堆栈片段
text
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007fff348728ff, pid=10516, tid=7092
#
# JRE version: OpenJDK Runtime Environment JBR-25.0.2+1-329.117-jcef (25.0.2+1)
# Java VM: OpenJDK 64-Bit Server VM JBR-25.0.2+1-329.117-jcef
# Problematic frame:
# C [skiko-windows-x64.dll+0x7128ff]
4.2 JVM 启动参数(已部分禁用硬件加速)
text
-Dsun.java2d.d3d=false
-Dsun.java2d.opengl=false
-Dsun.java2d.metal=false
-Dskiko.renderer=SOFTWARE
4.3 崩溃调用栈
text
C [skiko-windows-x64.dll+0x7128ff]
C [skiko-windows-x64.dll+0x711b52]
C [skiko-windows-x64.dll+0x7115ad]
C [skiko-windows-x64.dll+0x4d1ca3]
...
j org.jetbrains.skia.DirectContextKt._nFlushAndSubmit(JJZ)V
j org.jetbrains.skia.DirectContext.flushAndSubmit(Lorg/jetbrains/skia/Surface;Z)V
j org.jetbrains.skia.Surface.flushAndSubmit(Z)V
j org.jetbrains.skiko.swing.Direct3DSwingRedrawer.flush(Lorg/jetbrains/skia/Surface;Ljava/awt/Graphics2D;)V
j org.jetbrains.skiko.swing.Direct3DSwingRedrawer.onRender$lambda$1(...)
j org.jetbrains.skiko.swing.SwingRedrawerBase.redraw(Ljava/awt/Graphics2D;)V
j org.jetbrains.skiko.swing.SkiaSwingLayer.paint(Ljava/awt/Graphics;)V
j androidx.compose.ui.scene.skia.SwingSkiaLayerComponent$contentComponent$1.paint(Ljava/awt/Graphics;)V
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V
...
4.4 寄存器信息
text
siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), reading address 0x0000000000000000
RCX=0x0 is null
RIP=0x00007fff348728ff
五、根因诊断
5.1 渲染栈代际差异
PyCharm 2026.1.2 基于 IntelliJ Platform 2025.x,渲染管线整体从 Swing + Java2D 迁移到 Skia + JetBrains Compose:
| 版本 | JDK / JBR | 渲染栈 | 底层依赖 |
|---|---|---|---|
| 2020.1 | JBR 11 | Swing + Java2D | GDI / Direct2D |
| 2026.1 | JBR 25 | Skia + Compose | Direct3D / Vulkan / Metal |
即使 JVM 启动参数已显式设置
-Dskiko.renderer=SOFTWARE,从堆栈可见Direct3DSwingRedrawer仍被调用------这是 Skia SwingRedrawer 的"软件后端在 Windows 上仍走 Direct3D Surface"的设计。
5.2 关键崩溃点
- 崩溃模块 :
skiko-windows-x64.dll(JetBrains Skia 绑定) - 崩溃函数 :
Direct3DSwingRedrawer.flush→DirectContext.flushAndSubmit - 空指针访问 :
reading address 0x0000000000000000(即 RCX 寄存器为 NULL)
这通常是 Skia 在调用底层图形接口时,Surface 句柄为空或被提前释放所导致。
5.3 失败组合
| 因素 | 状态 |
|---|---|
| 操作系统 | Win10 1909(2020 年发布,2022 年 5 月 EOL,PyCharm 2026.1 未在该版本上做过完整测试) |
| 显卡驱动 | 2022 年 10 月版本,4 年未更新,Microsoft 兼容签名 |
| Skia 渲染栈 | 2026.1.2 强制使用 Skia,依赖较新的 DXGI / D3D11 特性 |
| Direct3D 路径 | 在老驱动 + 老系统上行为不稳定,Surface 创建/提交失败 |
根因总结:PyCharm 2026.1 的 Skia 渲染栈 + 老旧 Win10 1903 + 4 年未更新的 Microsoft 兼容驱动,三者叠加导致 Direct3D Surface 提交时空指针访问,进程崩溃。
六、解决方案
方案一:JVM 参数禁用 Skia(推荐,无需升级任何系统组件)
编辑 PyCharm 安装目录下的 vmoptions 文件:
D:\Program Files\JetBrains\PyCharm 2026.1.2\bin\pycharm64.exe.vmoptions
在文件末尾追加:
text
-Dskiko.useVulkan=false
-Dide.system.ide.skia.disable=true
-Dskiko.renderer=SOFTWARE_FALLBACK
-Dide.skija.render.on.graphics=true
-Dsun.java2d.d3d.offscreen=false
-Dawt.useSystemAAFontSettings=on
保存后重新启动 PyCharm。
✅ 实战验证:仅加前两行(
-Dskiko.useVulkan=false和-Dide.system.ide.skia.disable=true)即可让 PyCharm 2026.1 正常启动。
优势:
- 不需要升级系统、不需要动驱动
- 5 分钟搞定,影响面最小
- 回退方便,删掉这两行就恢复
代价:
- UI 渲染回退到 Swing 旧栈,部分动画/抗锯齿效果可能略差
- 后续 PyCharm 小版本升级可能引入新的渲染参数(需关注)
方案二:DDU 干净安装 NVIDIA 官方驱动(治本)
适合希望根治的用户。详细步骤:
1. 准备
- 下载 DDU(绿色免安装):https://www.wagnardsoft.com/display-driver-uninstaller-DDU-
- 下载 NVIDIA Studio 驱动 :https://www.nvidia.com/Download/index.aspx
- Product Type: GeForce
- Product Series: GeForce GTX 16 Series (Notebooks)
- Product: GeForce GTX 1660
- OS: Windows 10 64-bit
- Download Type: Studio Driver (SD)
- 把驱动安装包存到
D:\NVIDIA_Driver(不要放桌面或 C 盘根目录)
2. 断网
任务栏断 WiFi / 拔网线 / 开飞行模式,防止 Windows Update 自动装回老驱动。
3. 进入安全模式
Win + I → 更新和安全 → 恢复 → 高级启动 → 立即重启 → 疑难解答 → 高级选项 → 启动设置 → 重启 → 按 F4。
4. 运行 DDU
- 双击
Display Driver Uninstaller.exe - 设备类型选 GPU ,品牌选 NVIDIA
- 点 "清除并重启"
- 系统自动重启
5. 安装新驱动
- 重启后系统会变成 800×600 低分辨率(正常,无驱动状态)
- 跳过任何"正在搜索驱动程序"提示
- 右键以管理员身份运行驱动安装包
- 选择 自定义(高级) 安装
- 勾选"执行清洁安装"(Perform a clean installation)
- 等待安装完成自动重启
6. 验证
- 设备管理器 → 显示适配器 → 看到 NVIDIA GeForce GTX 1660,无黄色感叹号
- 驱动数字签名应为 NVIDIA Corporation(不再是 Microsoft)
- 重新连接网络
方案三:回退到 PyCharm 2024.3 LTS
如果方案一仍有问题,且不愿意升级驱动,PyCharm 2024.3 LTS 是最后一个对 Win10 老环境友好的大版本,使用 JBR 21 + 更稳定的渲染栈。
七、验证结果
按方案一仅加两行 JVM 参数后:
text
-Dskiko.useVulkan=false
-Dide.system.ide.skia.disable=true
PyCharm 2026.1.2 启动正常,主窗口、编辑器、终端、插件均正常工作。
八、经验总结
8.1 排查思路
#mermaid-svg-ormh1ak9flEE5AXI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ormh1ak9flEE5AXI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ormh1ak9flEE5AXI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ormh1ak9flEE5AXI .error-icon{fill:#552222;}#mermaid-svg-ormh1ak9flEE5AXI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ormh1ak9flEE5AXI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ormh1ak9flEE5AXI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ormh1ak9flEE5AXI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ormh1ak9flEE5AXI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ormh1ak9flEE5AXI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ormh1ak9flEE5AXI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ormh1ak9flEE5AXI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ormh1ak9flEE5AXI .marker.cross{stroke:#333333;}#mermaid-svg-ormh1ak9flEE5AXI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ormh1ak9flEE5AXI p{margin:0;}#mermaid-svg-ormh1ak9flEE5AXI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ormh1ak9flEE5AXI .cluster-label text{fill:#333;}#mermaid-svg-ormh1ak9flEE5AXI .cluster-label span{color:#333;}#mermaid-svg-ormh1ak9flEE5AXI .cluster-label span p{background-color:transparent;}#mermaid-svg-ormh1ak9flEE5AXI .label text,#mermaid-svg-ormh1ak9flEE5AXI span{fill:#333;color:#333;}#mermaid-svg-ormh1ak9flEE5AXI .node rect,#mermaid-svg-ormh1ak9flEE5AXI .node circle,#mermaid-svg-ormh1ak9flEE5AXI .node ellipse,#mermaid-svg-ormh1ak9flEE5AXI .node polygon,#mermaid-svg-ormh1ak9flEE5AXI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ormh1ak9flEE5AXI .rough-node .label text,#mermaid-svg-ormh1ak9flEE5AXI .node .label text,#mermaid-svg-ormh1ak9flEE5AXI .image-shape .label,#mermaid-svg-ormh1ak9flEE5AXI .icon-shape .label{text-anchor:middle;}#mermaid-svg-ormh1ak9flEE5AXI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ormh1ak9flEE5AXI .rough-node .label,#mermaid-svg-ormh1ak9flEE5AXI .node .label,#mermaid-svg-ormh1ak9flEE5AXI .image-shape .label,#mermaid-svg-ormh1ak9flEE5AXI .icon-shape .label{text-align:center;}#mermaid-svg-ormh1ak9flEE5AXI .node.clickable{cursor:pointer;}#mermaid-svg-ormh1ak9flEE5AXI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ormh1ak9flEE5AXI .arrowheadPath{fill:#333333;}#mermaid-svg-ormh1ak9flEE5AXI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ormh1ak9flEE5AXI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ormh1ak9flEE5AXI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ormh1ak9flEE5AXI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ormh1ak9flEE5AXI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ormh1ak9flEE5AXI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ormh1ak9flEE5AXI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ormh1ak9flEE5AXI .cluster text{fill:#333;}#mermaid-svg-ormh1ak9flEE5AXI .cluster span{color:#333;}#mermaid-svg-ormh1ak9flEE5AXI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ormh1ak9flEE5AXI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ormh1ak9flEE5AXI rect.text{fill:none;stroke-width:0;}#mermaid-svg-ormh1ak9flEE5AXI .icon-shape,#mermaid-svg-ormh1ak9flEE5AXI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ormh1ak9flEE5AXI .icon-shape p,#mermaid-svg-ormh1ak9flEE5AXI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ormh1ak9flEE5AXI .icon-shape .label rect,#mermaid-svg-ormh1ak9flEE5AXI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ormh1ak9flEE5AXI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ormh1ak9flEE5AXI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ormh1ak9flEE5AXI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
是
否
skiko
jcef
jvm
否
否
PyCharm 启动闪退
有日志?
查看崩溃模块和帧
用命令行启动,生成日志
崩溃在 JVM 内部?
检查 JVM 参数/堆内存/类路径
崩溃在 native 库
哪个 dll?
Skia 渲染问题
Chromium 嵌入问题
JDK 自身问题
尝试禁用 Skia 或升级驱动
解决?
DDU 重装显卡驱动
解决?
回退 PyCharm 大版本
8.2 关键经验
- 日志中的
Problematic frame行最关键------直接告诉你崩在哪个原生模块 - 看版本号差异------2020 → 2026 跨了 6 个大版本,渲染栈完全换了一套
- 不要忽视显卡驱动的"小问题"------Microsoft 兼容签名 + 4 年未更新,迟早会出事
- JVM 参数优先级高于 IDE 内部开关------vmoptions 文件是排查渲染问题的第一站
- DDU 是 Windows 上处理显卡驱动的终极工具------任何驱动问题先想到它
8.3 防御性建议
- 不要让显卡驱动欠账超过 6 个月------即便没有具体问题,也建议每半年升级一次
- JBR 大版本升级时(如 11→17→21→25),先在测试机器验证关键 IDE
- 建立配置快照------重要 IDE 的 vmoptions 文件建议纳入 dotfiles 仓库管理
- 保留上一版本安装包------升级前先做新版本验证,不行了能快速回退
九、附录
9.1 完整崩溃堆栈(节选)
text
Command Line: abort vfprintf -XX:ErrorFile=...\java_error_in_pycharm_%p.log
-Xms256m -Xmx2048m -XX:ReservedCodeCacheSize=512m
-Dsun.java2d.d3d=false -Dsun.java2d.opengl=false
-Dsun.java2d.metal=false -Dskiko.renderer=SOFTWARE
-Djb.vmOptionsFile=D:\Program Files\JetBrains\PyCharm 2026.1.2\bin\pycharm64.exe.vmoptions
com.intellij.idea.Main
Current thread: JavaThread "AWT-EventQueue-0"
Native frames:
C [skiko-windows-x64.dll+0x7128ff]
C [skiko-windows-x64.dll+0x711b52]
C [skiko-windows-x64.dll+0x7115ad]
C [skiko-windows-x64.dll+0x4d1ca3]
C [skiko-windows-x64.dll+0x4d9d42]
C [skiko-windows-x64.dll+0x6bd981]
C [skiko-windows-x64.dll+0x6edef2]
C [skiko-windows-x64.dll+0x487d6f]
C [skiko-windows-x64.dll+0x23ccc7]
C [skiko-windows-x64.dll+0x23c5e3]
C [skiko-windows-x64.dll+0x23d232]
C [skiko-windows-x64.dll+0x18325f]
C [skiko-windows-x64.dll+0x9d986]
Java frames:
j org.jetbrains.skia.DirectContextKt._nFlushAndSubmit(JJZ)V
j org.jetbrains.skia.DirectContext.flushAndSubmit(Lorg/jetbrains/skia/Surface;Z)V
j org.jetbrains.skia.Surface.flushAndSubmit(Z)V
j org.jetbrains.skiko.swing.Direct3DSwingRedrawer.flush(...)
j org.jetbrains.skiko.swing.SwingRedrawerBase.redraw(Ljava/awt/Graphics2D;)V
j org.jetbrains.skiko.swing.SkiaSwingLayer.paint(Ljava/awt/Graphics;)V
j androidx.compose.ui.scene.skia.SwingSkiaLayerComponent$contentComponent$1.paint(...)
j javax.swing.JComponent.paintChildren(Ljava/awt/Graphics;)V
...
9.2 相关工具链接
- DDU 官方下载:https://www.wagnardsoft.com/display-driver-uninstaller-DDU-
- NVIDIA 驱动下载:https://www.nvidia.com/Download/index.aspx
- JetBrains Skia 问题追踪:https://youtrack.jetbrains.com/issues/JBR
- IntelliJ Platform Skia 文档:https://plugins.jetbrains.com/docs/intellij/skia.html
9.3 文档元信息
- 故障日期:2026-06-21
- 解决耗时:约 30 分钟
- 最终方案:JVM 参数禁用 Skia
- 涉及产品:PyCharm 2026.1.2 / JBR 25.0.2 / Skia 1.x