记录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,没什么技术含量.那时候我刚入职,正好公司卖了一款仪器到某个国家,但是那边说配套的软件运行不起来,一打开就报错.经过排 ...
随机推荐
- 项目中遇到的各种bug和踩过的坑
zepto 赋值时单位转换问题 zepto 的 animate 方法移动某个元素的位置时,例如修改某个绝对定位的元素的 left 值,要与修改前的值单位一致,修改前如果是像素值,修改后也要是像素值,否 ...
- 【Python】djangorestframework 基于django框架的接口开发
官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...
- MySQL数据库(表)的导入导出(备份和还原)
一)在同一个数据库服务器上面进行数据表间的数据导入导出: 1. 如果表tb1和tb2的结构是完全一样的,则使用以下的命令就可以将表tb1中的数据导入到表tb2中: insert into db2.tb ...
- 解决NetBeans编辑器中文乱码问题
在JDK→JRE→lib目录下找到fontconfig.properties.src文件,打开,找到# Component Font Mappings,表示字体映射,可以看到下面列出了几种字体映射集合 ...
- for 小曦
安装GO 当前版本1.6.2 http://blog.163.com/hehaifeng1984@126/blog/static/690011362013101044011568/ 教程 https: ...
- WKWebView _WebFilterIsActive returning: NO
写这篇文是因为在UIWebView加载页面的时候有时候会返回: filterBlacklist = ( ); filterWhitelist = ( ); restrictWeb = 1; useCo ...
- leetcode 172
172. Factorial Trailing Zeroes Given an integer n, return the number of trailing zeroes in n!. Note: ...
- android 多线程下载
看代码: public class MainActivity extends AppCompatActivity { private final String TAG = MainActivity.c ...
- Kibana安装与基本用法
Kibana也是一个开源和免费的工具,他可以帮助您汇总.分析和搜索重要数据日志并提供友好的web界面.他可以为Logstash 和ElasticSearch 提供日志分析的Web界面 它是一个基于浏览 ...
- CSS特殊性值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...