记录Qt的一个诡异Bug
公司的一款项目,在迭代开发阶段,突然发现运行速度越来越慢,界面切换卡顿时间在2秒以上.经过和某个不卡版本的对比,惊奇的发现程序二进制都一模一样,就几个图片资源和脚本不一样.经过差不多一天的排查,发现是新加的splash程序影响了主程序的速度-.-
因为主程序设计的原因,启动大概需要10秒左右,为了不在黑的X界面等太久,为了界面的友好,我们独立做了个splash程序,用于在主程序启动之前显示友好提示界面,splash程序的生命周期是20秒,之后将自己退出.然而奇怪的是就是这个splash程序,即时在完全退出之后,主程序的响应速度也会慢上很多,切换界面需要卡顿2秒以上...,百思不得其解,对于操作系统而言,进程是互相独立的,而两个程序又没有资源上的访问冲突,即时splash程序写的再烂,在退出之后系统也会回收相应的资源,理论上不会对主程序造成任何影响.
经过组内讨论和思考后,我把问题定位在Qt库的问题,公司之前一直使用的是Qt4.6.3版本的库(为什么用这个版本的库也是有历史原因的),为了验证想法,我先用SDL写了个替代的splash程序测试,发现果然主程序就恢复正常了,然后再编译了个4.8.4版本的库替换进去,果然用原来的splash也不卡了,主程序的响应速度也比4.6.3快了一大截-.-
果然是Qt库本身的bug,这也就解释了为什么独立的两个进程会互相影响.为什么用Qt4.6.3这个图像运算没MMX优化的老版本也是因为之前踩过高版本的一个坑.我们有几款系统只有一个屏幕,需要主程序和FLASH之间不断切换,结果Qt4.7以上的版本在切换的过程中,有几率出现白屏的现象,但是进程还是在运行.之前也是排查了很久才发现是Qt库的问题,我猜测是几个程序对OpenGL的调用导致显卡资源锁住了.没办法才把Qt版本退回到了4.6.3(这个版本不会白屏,但是图形效率奇低,甚至连防抖处理都没,美工做的图片毛边明显).
最终决定这款产品上最新的4.8.7,因为这款产品不需要单屏切换,只是不知道之前的白屏问题修复没有.
记录Qt的一个诡异Bug的更多相关文章
- ugui SetParent在安卓上一个诡异bug
问题描述 我的环境:Unity3D 5.3.7 出问题机型:安卓模拟器.部分低配安卓机型(比如:红米2A) 以下代码是设置某个节点的父节点,在PC.Editor.大部分手机上都是正常的,但问题机型上, ...
- 一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG
这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三 ...
- geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表. 一.BUG调试 首先记录一天的BUG调试,简单copy了 ...
- VS编译器优化诱发一个的Bug
VS编译器优化诱发一个的Bug Bug的背景 我正在把某个C++下的驱动程序移植到C下,前几天发生了一个比较诡异的问题. 驱动程序有一个bug,但是这个bug只能 Win32 Release 版本下的 ...
- Safari 下用 "location.href = filePath" 实现下载功能的诡异 bug
Safari 下的一些诡异 bug 我们已经领教一二,比如前文中说的 无痕浏览模式下使用 localStorage 的 API 就会报错.今天我们要讲的是利用 location.href = file ...
- 记一个逻辑bug
1 从数据库中找出一个学生能选的毕业设计(毕设的select or not 字段表示本题目是否已经被选 此时就按照其值为n来查询) 2 用户选择某个毕设后,先更新毕设表(select ...
- 给dao层注入jdbcTemplate时的一个强行bug(jdbcDaoSupport不要随便用!用了要记得!)
记录Dao层一个鱼唇至极的错误 这一天我在使用Spring的进行注解配置项目时, 我的Idea给我抛了一个如下的错误: Exception in thread "main" org ...
- 记录一次线上bug
记录一次线上bug,总的来说就是弱网和重复点击.特殊值校验的问题. 测试场景一: 在3g网络或者使页面加载速度需要两秒左右的时候,输入学号,提交学生的缴费项目,提交完一个 学生的缴费后, ...
- 从一个小Bug,到Azure DevOps
1. 一个小Bug 最近和同事提起一个几年前的 Bug,那是一个很小很小的 Bug,没什么技术含量.那时候我刚入职,正好公司卖了一款仪器到某个国家,但是那边说配套的软件运行不起来,一打开就报错.经过排 ...
随机推荐
- Hibernate配置文档详解
Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...
- opendove中的odgw所需要的内核模块
最近组里要做opendove相关的东西,需要odgw的一个kernel-module. 以前安装过,但备份不见了,在此做个链接备忘 : https://git.opendaylight.org/ger ...
- 思达index网站
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- linux top命令中各cpu占用率含义
linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...
- 转换,2D,3D
一,转换定义: 1,能够改变元素的形状,尺寸,位置 2,转换分两种: 2D转换:只能在X,Y轴发生改变: 例子:旋转(rotate).拉伸(scale).平移(move).倾斜(skew) 3D转换: ...
- 机器学习系列------1. GBDT算法的原理
GBDT算法是一种监督学习算法.监督学习算法需要解决如下两个问题: 1.损失函数尽可能的小,这样使得目标函数能够尽可能的符合样本 2.正则化函数对训练结果进行惩罚,避免过拟合,这样在预测的时候才能够准 ...
- php编码规范
PHP 文件格式 1.对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末 ...
- --- shell 扩展的顺序
1. 扩展(expansion)是bash 解释器的重要的概念: 2. 命令替换是扩展里面的一种 3. 基本结构是: “字符串准备(花括号,波浪线,参数和变量扩展,命令替换),单词分割,路径扩展” h ...
- SDF文件的用途
标准延迟格式(英语:Standard Delay Format, SDF)是电气电子工程师学会关于集成电路设计中时序描述的标准表达格式.在整个设计流程中,标准延迟格式有着重要的应用,例如静态时序分析和 ...
- protobuf框架简介
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了三种语言的实现:java.c+ ...