QT 界面损坏

QT 界面损坏

几天前我遇到了一个奇怪的问题,我不知道该怎么办。我的一些程序界面最近似乎坏了。这很奇怪,因为我没有做过任何重大更新。在我看来(虽然我不是专家),所有的 QT 界面都坏了(例如 VLC、Clementine、Skype)。这真的让我很烦恼,因为我无法使用很多程序。然而,大多数程序和系统本身都运行良好。

界面看起来有些不完整,所有组件的尺寸都不对,文本不显示,用户交互时闪烁。我真的不知道从哪里开始,也不知道是什么原因导致了这样的问题,因为它多年来一直运行良好。

我正在运行 Ubuntu 14.04 LTS。

从命令行运行某些程序时,我收到 gtk-warning Gdk-WARNING **: shmget failed: error 28。这似乎是由于共享内存段的问题。这对我来说真的很奇怪,因为我使用系统的方式和往常一样。搜索这个错误带来了一些令人困惑的信息。然而,我找不到解决方案或任何对我有帮助的信息。

对于 Skype,我尝试过这里的解决方案和解决方法,但没有成功:如何修复 Skype 的图形问题,Gdk-WARNING?

编辑:

我发现当我重新启动时,应用程序可以正常工作。它们只是在某个时候停止工作……因此,Gdk-WARNING有关共享内存似乎是问题所在。虽然我似乎无法通过关闭所有正在运行的应用程序来释放任何内存。所以解决方案可能是找到占用共享内存空间的应用程序?

答案1

我也遇到过同样的问题。你说得对,原因是系统中没有可用的共享内存。

要找出谁占用了所有共享内存,你可以运行ipcs -m -p。在我的例子中,输出如下:

$ ipcs -m -p

------ Shared Memory Creator/Last-op PIDs --------
shmid      owner      cpid       lpid      
1277952    weekens    3642       3746      
2523137    weekens    4046       4119      
1409026    weekens    3696       3343      
786435     weekens    3203       1310      
1802244    weekens    3887       3919      
1900549    weekens    3899       3343      
1998854    weekens    3906       3343      
2031623    weekens    3872       498       
2326536    weekens    3885       17493     
2228233    weekens    3885       17493     
2261002    weekens    3885       17493     
2424843    weekens    3872       498       
2555916    weekens    3885       17493     
136708109  weekens    3872       498       
2719758    weekens    4176       3343      
2752527    weekens    4176       3343      
2850832    weekens    4573       18066     
2949137    weekens    4155       788       
2981906    weekens    4155       788       
3112979    weekens    4916       4916      
3145748    weekens    4916       4916      
3178517    weekens    4916       4916      
3211286    weekens    4916       4916      
3244055    weekens    4916       4916      
3276824    weekens    4916       4916      
3309593    weekens    4916       4916      
3342362    weekens    4916       4916      
3375131    weekens    4916       4916      
3407900    weekens    4916       4916      
3440669    weekens    4916       4916      
3473438    weekens    4916       4916      
3506207    weekens    4916       4916      
3538976    weekens    4916       4916      
3571745    weekens    4916       4916      
3604514    weekens    4916       4916      
3637283    weekens    4916       4916      
3670052    weekens    4916       4916      
3702821    weekens    4916       4916      
3735590    weekens    4916       4916      
3768359    weekens    4916       4916      
3801128    weekens    4916       4916      
3833897    weekens    4916       4916      
3866666    weekens    4916       4916      
3899435    weekens    4916       4916      
3932204    weekens    4916       4916      
3964973    weekens    4916       4916      
3997742    weekens    4916       4916      
4030511    weekens    4916       4916      
4063280    weekens    4916       4916      
4096049    weekens    4916       4916      
4128818    weekens    4916       4916      
4161587    weekens    4916       4916      
4194356    weekens    4916       4916      
4227125    weekens    4916       4916      
4259894    weekens    4916       4916      
4292663    weekens    4916       4916      
4325432    weekens    4916       4916      
4358201    weekens    4916       4916      
4390970    weekens    4916       4916
.... 4916 PID all the way down

,结果发现 PID 为 4916 的进程占用了所有共享内存(该进程为 IntelliJ IDEA)。kill 完该进程后,问题解决。

答案2

将我的 JDK 从版本 7 更新到版本 8 解决了这个问题。

sudo apt-get install openjdk-8-jdk 

如果您使用的是 14.04 或更早版本,则可能需要在安装之前手动添加 PPA(例如sudo add-apt-repository ppa:openjdk-r/ppa,虽然没有安全保障!)

接下来,通过以下方式选择新版本:

sudo update-alternatives --config java. 

您可以通过以下方式检查您的 Java 版本:

java -version 

它应该打印类似openjdk version "1.8.0_45-internal"

相关内容