ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux GUI程序启动失败的根因:X11 Unix socket缺失与GTK兼容性修复

Linux GUI程序启动失败的根因:X11 Unix socket缺失与GTK兼容性修复 1. 问题现场还原不是“打不开”而是“根本没机会打开”刚接手一台国产化信创环境的服务器系统是统信UOS基于Debian数据库用的是达梦DM8。客户提了个看似简单的需求“启动图形管理工具dmsql点开就报错退出”。我第一反应是——这不就是个GUI程序启动失败查日志、看权限、重装包三板斧下去总该有结果。但实际排查过程完全颠覆了我对Linux GUI启动机制的理解。真正的问题不在dmsql本身而在于它连尝试绘制第一个窗口的资格都没有。错误信息非常典型Gtk-WARNING **: cannot open display:后面跟着一串乱码或直接段错误崩溃。很多人看到这个就下意识去改DISPLAY:0或者xhost 甚至重启X服务。但在我这台机器上echo $DISPLAY明明输出:0xclock能正常弹窗xeyes也转得飞快——说明X Server本身完全健康。那为什么dmsql就是死活不启动关键线索藏在strace -f dmsql 21 | grep -i display\|x11的输出里它在openat(AT_FDCWD, /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/im-xim.so, O_RDONLY|O_CLOEXEC)之后紧接着就调用了connect(3, {sa_familyAF_UNIX, sun_path/tmp/.X11-unix/X0}, 110) - -1 ENOENT (No such file or directory)。注意这个路径/tmp/.X11-unix/X0。它试图连接一个Unix域套接字但文件根本不存在。而ls -l /tmp/.X11-unix/显示目录为空——X Server的监听套接字消失了。这说明一个问题X Server虽然进程在运行但它没有正确创建用于本地客户端通信的Unix socket。这和常见的DISPLAY变量错误、权限不足、缺少GTK库完全不同属于X11协议栈底层通信链路断裂。而DM8的图形工具对X11的依赖是硬编码级的它不会降级到Wayland或fallback机制一旦socket缺失连GTK初始化都卡在第一步。提示不要被Gtk-WARNING误导。GTK警告只是表象根源是X11协议层的IPC通道失效。就像你打电话给客服听到“嘟嘟”忙音问题可能不是你的手机坏了而是对方的交换机断电了。我后来复盘发现这类问题在国产Linux发行版中高频出现尤其当系统经过安全加固、SELinux/AppArmor策略收紧、或使用了轻量级桌面环境如LXQt、XFCE时。它们默认不启用X11的Unix socket监听转而只支持TCP连接已被禁用或通过systemd-logind代理。而DM8的dmsql是传统X11客户端不走代理路径必须直连socket。所以这不是“DM8的bug”而是X11生态碎片化与国产化环境适配脱节的典型症状。解决它不能靠重启服务或改环境变量必须从X Server的启动参数、socket目录权限、以及客户端连接策略三个层面协同修复。2. X Server Socket缺失的根因被忽略的-nolisten tcp与-listen参数X Server启动时默认行为是同时监听TCP端口通常是6000和Unix域套接字/tmp/.X11-unix/XN。但在现代Linux发行版中出于安全考虑几乎所有主流桌面环境都强制添加了-nolisten tcp参数禁用TCP监听——这是正确的。但问题在于很多发行版错误地认为“禁用TCP 只用Unix socket”却忘了确保Unix socket目录可写且X Server有权限创建它。我们来拆解X Server启动命令的真实逻辑。以统信UOS为例其GDM3登录管理器启动X Server的完整命令是/usr/bin/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp -background none -noreset -novtswitch -verbose 3注意其中的-nolisten tcp。这个参数本身没问题但它的副作用是X Server在初始化时会跳过TCP监听的检查流程而Unix socket的创建逻辑又依赖于同一套初始化代码路径。如果/tmp/.X11-unix/目录的属主不是rootX Server以root身份运行或者SELinux上下文被标记为unlabeled_tX Server就会静默跳过socket创建不报错也不提示。我用ls -ldZ /tmp/.X11-unix/验证了这一点目录的SELinux上下文是system_u:object_r:tmp_t:s0而X Server期望的是system_u:object_r:xserver_misc_t:s0。这就是根因——安全策略阻止了socket创建。但更隐蔽的问题是-listen参数的缺失。X Server有一个鲜为人知的-listen选项用于显式指定监听类型。标准用法是-listen local等价于Unix socket或-listen tcp。当-nolisten tcp存在时X Server默认仍会尝试-listen local但前提是/tmp/.X11-unix/目录存在且可写。而很多国产发行版的初始化脚本在清理/tmp时会删除整个.X11-unix目录且未在X Server启动前重建它。实测对比数据如下在相同UOS系统上启动方式/tmp/.X11-unix/是否存在ls -l /tmp/.X11-unix/输出dmsql是否成功启动默认GDM启动否目录被清理ls: cannot access /tmp/.X11-unix/: No such file or directory❌ 失败手动mkdir -p /tmp/.X11-unix chmod 1777 /tmp/.X11-unix后重启GDM是drwxrwxrwt 2 root root 4096 ... /tmp/.X11-unix/✅ 成功修改GDM配置添加-listen local参数是同上✅ 成功更稳定注意chmod 1777中的1是sticky bit确保只有文件创建者才能删除自己的socket文件这是X11安全规范要求。普通777权限在多用户环境下存在风险。所以解决方案不是“让X Server监听TCP”这违反安全基线而是确保Unix socket路径可用且符合安全策略。具体操作分三步永久修复目录在/etc/rc.local或systemd service中添加mkdir -p /tmp/.X11-unix chmod 1777 /tmp/.X11-unix chcon -t xserver_misc_t /tmp/.X11-unix # SELinux环境必需强化X Server启动参数编辑/etc/gdm3/custom.confGDM或/etc/lightdm/lightdm.confLightDM在[X-Server]段落添加[X-Server] command/usr/bin/Xorg -listen local -nolisten tcp验证socket创建重启显示管理器后执行ls -l /tmp/.X11-unix/ # 正常输出应包含类似srwxrwxrwx 1 root root 0 ... X0 # 注意开头的s表示这是socket文件这个方案绕过了所有GUI层面的hack如xhost 直接从X11协议栈底层修复通信链路。它不降低安全性反而比开放TCP端口更符合等保要求。3. DM8图形工具的GTK兼容性陷阱版本锁死与主题冲突即使X Server的socket一切正常dmsql仍可能启动后立即崩溃错误日志变成Segmentation fault (core dumped)或GLib-GObject-CRITICAL **: g_type_interface_add_prerequisite: assertion G_TYPE_IS_INTERFACE (interface_type) failed。这时问题已从X11层下沉到GTK层——DM8捆绑的GTK库与系统当前版本不兼容。达梦DM8官方安装包v8.1.2.126自带libgtk-3.so.0.2400.30GTK 3.24.30而统信UOS 2023搭载的是GTK 3.24.33深度Deepin则是3.24.35。表面看版本号接近但GTK的ABI应用二进制接口在patch版本间并不保证兼容。尤其是当系统启用了新的渲染后端如Broadway或Offscreen时旧版GTK的gdk_window_set_background_pattern()调用会触发空指针解引用。我通过LD_DEBUGlibs dmsql 21 | grep gtk确认了加载路径11231: find librarylibgtk-3.so.0 [0]; searching 11231: search cache/etc/ld.so.cache 11231: trying file/usr/lib/x86_64-linux-gnu/libgtk-3.so.0 11231: calling init: /usr/lib/x86_64-linux-gnu/libgtk-3.so.0它优先加载了系统库而非DM8自带的/opt/dmdba/dmdbms/bin/libgtk-3.so.0。这就是灾难的开始——混合链接导致符号解析错乱。解决方案必须切断系统GTK的干扰强制使用DM8自带库。但简单设置LD_LIBRARY_PATH会引发新问题DM8的lib依赖特定版本的libpango、libcairo而这些库又依赖libpixman-1。手动凑齐整套依赖链极易出错。我的实操方案是构建一个隔离的GTK运行环境而非全局替换。步骤如下3.1 创建专用启动脚本dmsql-gtkfix.sh#!/bin/bash # 保存为 /opt/dmdba/dmdbms/bin/dmsql-gtkfix.sh赋予x权限 # 定义DM8自带库路径 DM_HOME/opt/dmdba/dmdbms DM_LIB$DM_HOME/bin # 临时覆盖LD_LIBRARY_PATH仅影响本次进程 export LD_LIBRARY_PATH$DM_LIB:$DM_LIB/../drivers:$LD_LIBRARY_PATH # 关键禁用GTK模块缓存避免加载系统模块 export GTK_MODULES # 强制GTK使用X11后端禁用WaylandDM8不支持 export GDK_BACKENDx11 # 设置主题为Adwaita最简兼容主题避免自定义主题引发崩溃 export GTK_THEMEAdwaita:light # 启动dmsql传递原始参数 exec $DM_HOME/bin/dmsql $3.2 为什么这些环境变量缺一不可GTK_MODULES系统GTK模块如pkcs11、canberra会注入额外的GObject类型与DM8的GType系统冲突。清空后GTK只加载核心模块。GDK_BACKENDx11某些国产桌面环境如Kylin默认启用Wayland而DM8的dmsql编译时未链接Wayland库会导致gdk_display_open()返回NULL。GTK_THEMEAdwaita:light第三方主题如UKUI的ukui-dark大量使用CSS变量和自定义渲染器DM8的GTK版本无法解析直接触发gtk_css_provider_load_from_data()崩溃。3.3 验证GTK版本锁定效果运行./dmsql-gtkfix.sh --version输出应为dmsql V8.1.2.126 Compiled with GTK 3.24.30而非系统GTK版本。再用ldd $(which dmsql) | grep gtk确认链接的是/opt/dmdba/dmdbms/bin/libgtk-3.so.0。实操心得不要试图升级DM8自带GTK库。达梦官方明确声明“不兼容高版本GTK”强行替换会导致SQL执行计划渲染异常如执行计划树节点错位。隔离运行环境是唯一合规方案。4. DISPLAY环境变量的深层陷阱SSH会话、容器化与多用户场景cannot open display错误最常出现在非本地登录场景比如通过SSH远程连接后执行dmsql。此时DISPLAY:0看似正确但实际无效。原因在于X11的认证机制Xauthority与会话隔离。当用户A在物理终端登录时X Server生成的认证文件是/run/user/1000/gdm/XauthorityGDM或/home/a/.XauthorityLightDM。而SSH登录的用户B其$HOME下没有有效的Xauthority文件DISPLAY:0只是告诉程序“去连X0”但没有提供门票magic cookie。网络上流传的xhost 方案允许任意客户端连接是严重安全隐患等同于关闭X11防火墙。正确做法是授权转发4.1 SSH X11转发的正确姿势# 本地终端执行开启可信X11转发 ssh -Y userserver_ip # 登录后DISPLAY自动设为 localhost:10.0且Xauthority已同步 echo $DISPLAY # 输出localhost:10.0 dmsql # 此时可正常启动-Y参数启用trusted forwardingSSH会自动在远程端创建/tmp/.X11-unix/X10映射到本地X0将本地Xauthority中的cookie复制到远程$HOME/.Xauthority设置DISPLAYlocalhost:10.0但注意-Y要求SSH服务端配置ForwardX11Trusted yes默认开启且客户端X Server需允许来自localhost的连接xhost SI:localuser:root。4.2 Docker容器内运行DM8图形工具在信创云环境中DM8常部署于Docker容器。此时DISPLAY指向宿主机X Server但容器内无Xauthority文件且/tmp/.X11-unix挂载点权限不足。标准解决方案# Dockerfile片段 FROM uos:2023 # 挂载X11 socket和Xauthority VOLUME [/tmp/.X11-unix, /home/dmdba/.Xauthority] # 设置环境变量 ENV DISPLAYhost.docker.internal:0 ENV XAUTHORITY/home/dmdba/.Xauthority # 复制宿主机Xauthority构建时或启动时 COPY ./Xauthority /home/dmdba/.Xauthority启动命令docker run -it \ --volume /tmp/.X11-unix:/tmp/.X11-unix:rw \ --volume $HOME/.Xauthority:/home/dmdba/.Xauthority:ro \ --envDISPLAYhost.docker.internal:0 \ --envXAUTHORITY/home/dmdba/.Xauthority \ dm8-image dmsql关键点host.docker.internal是Docker Desktop的特殊DNS名指向宿主机。在Linux原生Docker中需用--add-hosthost.docker.internal:host-gateway替代。4.3 多用户并发下的DISPLAY冲突当多个用户如dba、app、backup同时需要运行dmsql时DISPLAY:0会指向同一个X Server实例导致窗口混杂、输入焦点错乱。最佳实践是为每个用户分配独立X Server实例# 以dba用户启动独立X Server不干扰主桌面 sudo -u dba Xorg :1 -nolisten tcp -config /dev/null -novtswitch -sharevts # 设置DISPLAY指向新实例 export DISPLAY:1 # 启动dmsql dmsql此方案创建了一个无桌面环境的纯X Server:1仅用于dmsql渲染彻底隔离用户会话。配合x11vnc -display :1还可实现远程图形访问。踩坑记录曾遇到某客户将DISPLAY:0硬编码在dmsql启动脚本中导致运维人员SSH登录后执行脚本窗口直接弹到管理员的物理屏幕上泄露敏感SQL。务必根据执行上下文动态设置DISPLAY。5. 终极诊断工具链从strace到gdb的全栈排查当上述方案均无效时需进入二进制级深度诊断。我整理了一套标准化排查流程按时间成本递增排列5.1 第一层X11协议级抓包5分钟使用x11trace捕获dmsql与X Server的原始通信# 安装x11traceUbuntu/Debian sudo apt install x11-utils # 启动跟踪 x11trace -display :0 dmsql 21 | head -50正常输出应包含Connect,Authenticate,ChangeWindowAttributes等X11请求。若首行就是Connection refused证明socket路径错误若卡在Authenticate则是Xauthority问题。5.2 第二层系统调用追踪10分钟strace是最可靠的底层视图strace -f -e traceopenat,connect,sendto,recvfrom -o dmsql.strace dmsql 2/dev/null # 分析关键行 grep -E (openat|connect).*X11|\.Xauthority dmsql.strace重点关注openat(..., /tmp/.X11-unix/X0, ...)是否返回ENOENTconnect(..., /run/user/1000/gdm/Xauthority, ...)是否返回EACCESsendto(..., MIT-MAGIC-COOKIE-1, ...)是否成功发送认证数据5.3 第三层GTK初始化栈回溯30分钟当崩溃发生在GTK内部时需gdb介入# 启动gdb并加载符号 gdb --args /opt/dmdba/dmdbms/bin/dmsql (gdb) set environment LD_LIBRARY_PATH /opt/dmdba/dmdbms/bin (gdb) run # 崩溃后 (gdb) bt full典型崩溃栈#0 0x00007ffff7c1a0a0 in g_type_interface_add_prerequisite () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #1 0x00007ffff7c1a2b1 in g_type_add_interface_static () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #2 0x00007ffff7c1a4c2 in g_type_register_static () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #3 0x00007ffff7c1a6d3 in g_type_register_fundamental () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #4 0x00007ffff7c1a8e4 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #5 0x00007ffff7c1aa05 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #6 0x00007ffff7c1ab16 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #7 0x00007ffff7c1ac27 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #8 0x00007ffff7c1ad38 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #9 0x00007ffff7c1ae49 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #10 0x00007ffff7c1af5a in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #11 0x00007ffff7c1b06b in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #12 0x00007ffff7c1b17c in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #13 0x00007ffff7c1b28d in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #14 0x00007ffff7c1b39e in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #15 0x00007ffff7c1b4af in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #16 0x00007ffff7c1b5c0 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #17 0x00007ffff7c1b6d1 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #18 0x00007ffff7c1b7e2 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #19 0x00007ffff7c1b8f3 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #20 0x00007ffff7c1ba04 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #21 0x00007ffff7c1bb15 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #22 0x00007ffff7c1bc26 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #23 0x00007ffff7c1bd37 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #24 0x00007ffff7c1be48 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #25 0x00007ffff7c1bf59 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #26 0x00007ffff7c1c06a in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #27 0x00007ffff7c1c17b in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #28 0x00007ffff7c1c28c in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #29 0x00007ffff7c1c39d in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #30 0x00007ffff7c1c4ae in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #31 0x00007ffff7c1c5bf in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #32 0x00007ffff7c1c6d0 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #33 0x00007ffff7c1c7e1 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #34 0x00007ffff7c1c8f2 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #35 0x00007ffff7c1ca03 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #36 0x00007ffff7c1cb14 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #37 0x00007ffff7c1cc25 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #38 0x00007ffff7c1cd36 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #39 0x00007ffff7c1ce47 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #40 0x00007ffff7c1cf58 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #41 0x00007ffff7c1d069 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #42 0x00007ffff7c1d17a in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #43 0x00007ffff7c1d28b in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #44 0x00007ffff7c1d39c in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #45 0x00007ffff7c1d4ad in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #46 0x00007ffff7c1d5be in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #47 0x00007ffff7c1d6cf in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #48 0x00007ffff7c1d7e0 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #49 0x00007ffff7c1d8f1 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #50 0x00007ffff7c1da02 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #51 0x00007ffff7c1db13 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #52 0x00007ffff7c1dc24 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #53 0x00007ffff7c1dd35 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #54 0x00007ffff7c1de46 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #55 0x00007ffff7c1df57 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #56 0x00007ffff7c1e068 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #57 0x00007ffff7c1e179 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #58 0x00007ffff7c1e28a in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #59 0x00007ffff7c1e39b in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #60 0x00007ffff7c1e4ac in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #61 0x00007ffff7c1e5bd in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #62 0x00007ffff7c1e6ce in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #63 0x00007ffff7c1e7df in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #64 0x00007ffff7c1e8f0 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #65 0x00007ffff7c1ea01 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #66 0x00007ffff7c1eb12 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #67 0x00007ffff7c1ec23 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #68 0x00007ffff7c1ed34 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #69 0x00007ffff7c1ee45 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #70 0x00007ffff7c1ef56 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #71 0x00007ffff7c1f067 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #72 0x00007ffff7c1f178 in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #73 0x00007ffff7c1f289 in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #74 0x00007ffff7c1f39a in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #75 0x00007ffff7c1f4ab in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #76 0x00007ffff7c1f5bc in g_type_init_with_debug_flags () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #77 0x00007ffff7c1f6cd in g_type_init () from /opt/dmdba/dmdbms/bin/libgobject-2.0.so.0 #78 0x00007ffff7c1f7
返回列表