复制大文件 kde 崩溃

12.3 KDE 从服务器上复制virtualbox虚拟系统时kde崩溃跳到登录界面,虚拟系统目录大小为3.5G,复制到3.2G时崩溃,已复制4次,每次都这样。
且复制速度非常慢,千兆局域网才2.2M/S,同环境下win最低可以达到20多M。网卡是RTL8111/8168 PCI Express Gigabit Ethernet controller,板载的。
然后在yast中打开系统日志,出错提示如下:
terminate called after throwing an instance of 'std::bad_alloc’
what(): std::bad_alloc
YaST got signal 6 at YCP file /usr/share/YaST2/clients/view_anymsg.ycp:173
/sbin/yast2: 行 431: 4332 已放弃 $ybindir/y2base $module “$@” “$SELECTED_GUI” $Y2_GEOMETRY $Y2UI_ARGS
在终端下查看var/log/messages文件为空。
请问各位如何解决复制大文件KDE崩溃的问题。

  1. 你这不是复制大文件的日志,是 YaST 崩溃的日志。

173 行是

UI::ChangeWidget( id(log ), `Value, file_contents );

/sbin/yast2: 行 431: 4332 已放弃 $ybindir/y2base $module “$@” “$SELECTED_GUI” $Y2_GEOMETRY $Y2UI_ARGS

表明你缺失模块。

$ cd /usr/share/YaST2/
$ find . -name "Syslog.ycp"
./modules/Syslog.ycp
$ rpm -qf ./modules/Syslog.ycp
yast2-2.23.23-1.4.1.x86_64

它在 yast2 主包里。所以我也不知道你为什么搞丢了。

rpm -qa grep yast2-* > yastlist.txt

把生成的 yastlist.txt 上传一下。

  1. 至于为什么 /var/log/messages 为空请去阅读 wiki:

zh.opensuse.org/openSUSE:12.3%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

  1. 关于你的大文件复制问题,请说明你是怎么复制的。大文件一般都用 rsync 同步,而不是复制或剪切。

感谢老大回复,生成的 yastlist.txt 如下:
yast2-xml-2.16.1-71.1.1.i586
yast2-sysconfig-2.22.0-4.1.2.noarch
yast2-firewall-2.21.2.1-5.4.1.noarch
yast2-control-center-qt-2.22.2-4.1.2.i586
yast2-trans-zh_CN-2.23.0-5.4.1.noarch
yast2-pkg-bindings-2.23.1-1.1.1.i586
yast2-mouse-2.21.0-7.1.2.i586
yast2-ruby-bindings-0.3.13-2.1.1.i586
yast2-sudo-2.22.0-4.1.2.noarch
yast2-inetd-2.21.4-2.1.2.noarch
yast2-iscsi-client-2.23.4-1.1.1.noarch
yast2-slp-2.23.0-1.1.1.i586
yast2-kerberos-client-2.23.3-2.1.2.noarch
yast2-nfs-client-2.21.9-2.1.2.noarch
yast2-restore-2.23.3-2.1.2.noarch
yast2-packager-2.23.3-1.1.2.i586
yast2-tv-2.21.4-7.1.2.noarch
yast2-core-2.23.4-2.1.1.i586
yast2-ycp-ui-bindings-2.21.6-2.1.1.i586
yast2-installation-2.23.14-1.8.7.noarch
yast2-packager-webpin-2.23.3-1.1.2.i586
yast2-runlevel-2.21.9-2.1.2.noarch
yast2-nfs-common-2.21.6-2.1.2.noarch
yast2-country-2.23.1-1.1.2.i586
yast2-ldap-2.23.0-1.1.1.i586
yast2-users-2.23.4-1.1.1.i586
yast2-samba-server-2.23.2-1.1.1.noarch
yast2-country-data-2.23.1-1.1.2.i586
grep-2.14-2.1.1.i586
yast2-metapackage-handler-0.8.14-7.1.2.noarch
yast2-trans-stats-2.19.0-12.1.1.noarch
yast2-scanner-2.23.0-4.1.2.i586
yast2-theme-openSUSE-Oxygen-2.21.18-7.1.1.noarch
yast2-ldap-client-2.23.2-2.1.2.noarch
yast2-hardware-detection-2.22.0-4.1.1.i586
yast2-sound-2.22.1-4.1.2.i586
yast2-control-center-2.22.2-4.1.2.i586
yast2-pam-2.23.1-1.1.1.noarch
yast2-dbus-client-2.22.0-4.1.1.i586
yast2-transfer-2.22.0-4.1.1.i586
yast2-storage-2.23.9-1.4.1.i586
yast2-bootloader-2.23.11-1.1.1.i586
yast2-update-2.23.1-1.1.1.i586
yast2-samba-client-2.23.2-1.1.1.noarch
yast2-backup-2.23.1-2.1.2.noarch
yast2-branding-openSUSE-2.18.0-19.1.1.noarch
yast2-vm-2.22.4-1.1.1.i586
yast2-qt-branding-openSUSE-12.3-6.11.3.noarch
yast2-irda-2.23.0-2.1.2.noarch
yast2-x11-2.22.1-4.1.1.i586
yast2-http-server-2.22.0-4.1.2.noarch
yast2-ntp-client-2.21.2-6.1.2.noarch
yast2-printer-2.23.1-5.1.2.i586
yast2-security-2.23.6-1.8.1.noarch
yast2-online-update-frontend-2.23.1-2.1.2.noarch
yast2-tune-2.22.0-4.1.2.i586
yast2-proxy-2.22.1-4.1.2.noarch
yast2-add-on-2.23.1-2.1.2.noarch
yast2-nis-client-2.23.1-2.1.2.i586
yast2-theme-openSUSE-2.21.18-7.1.1.noarch
yast2-mail-2.21.1-9.5.1.noarch
yast2-network-2.24.16-1.1.1.i586
yast2-perl-bindings-2.19.2-2.1.1.i586
yast2-online-update-2.23.1-2.1.2.noarch
yast2-dbus-server-2.23.0-2.1.1.i586

我没有用 rsync 是因为复制粘贴简单、方便了事。
这个虚拟系统是 xp,里面除了 xp 自带软件外就安装了一个炒客轮盘软件,
不是很重要。

我只是好奇你说你从服务器复制,服务器怎么跑上 Virtualbox 了… 另外你在网络环境里怎么复制粘贴的,那按理叫下载了呀。是开共享然后直接往本地拖的?那样涉及的就不只是 KDE 了,还有 NFS。

下载速度不只和网速有关,还和你硬盘读写速度有关,下得再快灌不进去有什么用啊。KDE 系统托盘那个进度条显示的是往硬盘里写的速度,只有专业的下载软件的进度条才会是下载速度。至于你灌的速度慢,我猜测有两种原因,一是你的分区格式,windows 肯定是 ntfs,linux 你要用了不成熟的分区格式比如 btrfs,也可能会读写很慢甚至出问题。另外 btrfs 的一个特性叫写入时复制,就是说你复制的是 3.5 GB,但是它还在隐藏文件夹里备份了 3.5 GB,然后你磁盘空间不够,KDE 对这种情况代码上又没做例外处理,因为 btrfs 是冗余磁盘格式,它实际用了 7 GB 但现在 linux 上除了 btrfs 自己的工具其它工具都支持不好只显示 3.5 GB,KDE 从那些工具读取空间使用情况,认为还有地方,硬写,于是就崩溃了。raid 也有这种情况。二是你的 windows 盘和 linux 盘占的硬盘磁道肯定不一样,你的 linux 盘的那个位置有坏道。不过绝大多数情况都不会那么倒霉。

所以我们先来排除下这两种最糟糕的情况。你是 btrfs 吗?

Sent from my Galaxy Note 2 using Tapatalk 2

多谢老大回复,我是在公司局域网下,从 win2003 文件服务器将以前存放的 virtualbox 镜像复制到我自己的电脑上的,这个不叫下载。
这两天我重新安装了网卡驱动,也卸载了 virtualbox,问题依然如此。公司另一台测试小电脑所安装的 kubuntu 复制正常、网速也正常。
本人电脑不是双操作系统,只安装了 suse linux,刚装还没几天呢,剩余空间肯定是有的,硬盘是西数 1T 黑盘,还不到一年,应该
没问题。说出来不怕笑话,我现在还找不到 KDE 的日志,老大指点下不?或者干脆用 vmware?
当初分区的时候我也没注意,用的默认设置,刚看了下是 EXT4,如果 suse 里 ext4 转 btrfs 没问题的话,我试试看。
要是您还能想到其他的可能出问题的地方,就一起都告诉我吧,谢谢!

Hi,

我比较了你的 yastlist 和我的 yast,只有这些不一样

yast2-ruby-bindings-0.3.13-2.1.1.i586
yast2-tv-2.21.4-7.1.2.noarch
yast2-scanner-2.23.0-4.1.2.i586
yast2-http-server-2.22.0-4.1.2.noarch
yast2-dbus-server-2.23.0-2.1.1.i586

但是这些模块对你开启 syslog 没有影响。另外 google 了下。

google.com.hk/search?newwindow=1&safe=strict&q=YaST+got+signal+6+at+YCP+file+std%3A%3Abad_alloc&oq=YaST+got+signal+6+at+YCP+file+std%3A%3Abad_alloc&gs_l=serp.3…23843.24455.0.24860.2.2.0.0.0.0.134.248.0j2.2.0…0.0.0…1c.1.12.serp.YgGVTGANeGI

YaST 遇到 std::bad_alloc 的情况已知 bug 都是因为内存不足。

你是在复制过程中想看的 syslog?你下次遇到这个错误的时候运行下

free

并把结果记录下来。要不是这个原因,那就值得去开一个 bugreport 了。

另外这个搜索也启示了我。是不是你复制过程中内存不足造成的 KDE 崩溃呢?

  1. KDE 日志的问题,如果我没理解错的话,KDE 有自己的 bug 汇报程序,如果是 KDE 的异常那它就会抛出给那个程序,确切点说就会弹出个对话框让你汇报故障。唯一我知道的有 log 的程序是 kdm。但是 kdm 崩溃的话你根本进不了 KDE。

另外根据你的描述,KDE 没有异常直接回到登录页面,那原因不会是 KDE,而是 X server 崩溃重启了。

所以你最好去看下 /var/log/Xorg.0.log 和 Xorg.0.log.old。里面 [EE] 的表示错误。

  1. VMware 还不如 VirtualBox 呢。

  2. 既然你不是 btrfs 那就没必要去试它的 bug。