CnPack Forum » CnPack IDE 专家包(CnWizards) » 征集双核系统下D2007不稳定问题的反馈


2009-9-17 22:34 zjy
征集双核系统下D2007不稳定问题的反馈

在论坛上看到两个关于双核系统下IDE不稳定问题的帖子:
[url=http://bbs.cnpack.org/viewthread.php?tid=3127]http://bbs.cnpack.org/viewthread.php?tid=3127[/url]

[url=http://bbs.cnpack.org/viewthread.php?tid=3115]http://bbs.cnpack.org/viewthread.php?tid=3115[/url]

根据堆栈信息的线索:
[053932EB]{exceptiondiag100.bpl} ExceptionDiagForm.LoadedModules (Line 56, "ExceptionDiagForm.pas" + 18) + $6C
[20ACF536]{coreide100.bpl} StructureView.TBaseStructureViewServices.SyncStructureChanged (Line 299, "StructureView.pas" + 2) + $8
[2000A455]{rtl100.bpl  } System.@CheckAutoResult (Line 18047, "sys\system.pas" + 6) + $0
[20ACF536]{coreide100.bpl} StructureView.TBaseStructureViewServices.SyncStructureChanged (Line 299, "StructureView.pas" + 2) + $8
[2003EA79]{rtl100.bpl  } Classes.CheckSynchronize (Line 9835, "common\Classes.pas" + 22) + $8
[2016335E]{vcl100.bpl  } Forms.TApplication.Idle (Line 8548, "Forms.pas" + 22) + $11
[20162637]{vcl100.bpl  } Forms.TApplication.HandleMessage (Line 8124, "Forms.pas" + 1) + $11
[2016291F]{vcl100.bpl  } Forms.TApplication.Run (Line 8223, "Forms.pas" + 20) + $3
[0042297A]{bds.exe     } bds.bds (Line 195, "" + 7) + $7

我在D2007下跟踪了一下,结果如下:
IDE有一个单独的后台线程用于实时进行代码解析,以支持Structure窗口的结构显示。
异常时堆栈信息显示出错的函数,应该是在编辑代码时,TBaseStructureViewServices.StructureChanged 在后台线程获得变更通知后,用 TThread.Queue 切换到主线程在 Idle 时通过 SyncStructureChanged 再调用 StructureChanged 时出现的异常。怀疑是由于双核系统下在主线程中执行的 StructureChanged 函数和后台的 Parser 线程之间冲突所致。

目前 CW 的助手或结构高亮等功能也是在主线程 Idle 或定时器中来执行调用后台编译器和代码分析等操作,尚不清楚是什么地方与 IDE 原有的功能有冲突,也不排除 IDE 本身有 Bug,被 CW 放大的可能性。

能重现此问题的朋友,请帮助从以下几方面测试一下:
1、当出现异常对话框时,是否每次异常的堆栈信息都与前面的类似?
2、出现异常的时刻,是否每次都是输入字符等待输入助手弹出的瞬间?
3、当禁用输入助手后,是否还会出现故障?
4、当禁用高亮专家后,是否还会出现故障?
注:禁用专家最好是按照置顶调试帖中的方法(启动IDE时按Shift键),彻底禁止专家创建。

2009-9-18 02:22 zmfu
如果打开一个大的pas,在一个类的private加个变量,或改一下变量名,这时IDE挂掉的可能性是90%

就是你说的第二点
2、出现异常的时刻,是否每次都是输入字符等待输入助手弹出的瞬间?

不过自从我用新版的CW后这几天都没遇到过了

2009-9-19 16:20 zmfu
今天有遇到IDE挂了,打开助手时  每次都是输入字符等待输入助手弹出的瞬间,IDE挂了,禁用助手后,使用IDE自带的现在没有再出现,代码高亮和写线开着没事

[[i] 本帖最後由 zmfu 於 2009-9-19 16:21 編輯 [/i]]

2009-9-21 13:16 zmguozi
能重现此问题的朋友,请帮助从以下几方面测试一下:
1、当出现异常对话框时,是否每次异常的堆栈信息都与前面的类似?
2、出现异常的时刻,是否每次都是输入字符等待输入助手弹出的瞬间?
3、当禁用输入助手后,是否还会出现故障?
4、当禁用高亮专家后,是否还会出现故障?

1.待测试;
2.出现异常时,输入字符会出现.有时候不输入任何字符也出现,光标点击某行时出现;
3.禁用专家不出现;
4.禁用后,会出现;
补充:屏蔽双核,只用一个核心,就不会出现.

[[i] 本帖最後由 zmguozi 於 2009-9-21 13:22 編輯 [/i]]

2009-9-21 23:19 fdltc
其实双核问题不大,没必要花费精力,大不了启动时多一个选项:以单核运行。

我没感觉ide为什么需要双核,提高不了速度,而且一个好的IDE也不应该占用过多的cpu资源

2009-9-22 09:33 zmguozi
楼上的不是一个很好的解决问题的态度.有问题肯定要修补.
并且双核已经普及,再不解决,很郁闷的.
况且解决双核问题并不是单纯的助手的问题,而是对新事物的态度.

[[i] 本帖最後由 zmguozi 於 2009-9-22 09:36 編輯 [/i]]

2009-9-22 11:42 zjy
这个问题有点麻烦

在我公司的双核台式机E8400和家里的双核笔记本T6600上都不能重现。

从大家的反馈看,异常应该出现在助手调用后台编译器和IDE的代码结构窗口后台刷新时,双核下两线程同时访问冲突了。

助手在2007下是用规范的方式来调用编译接口。大家能不能再测试一下,禁用专家包后,在输入字符后快速用ctrl+空格调用IDE自己的自动完成。如果出异常,就可以确定是IDE自己的问题了。

2009-9-22 14:55 zmfu
打开助手时在一个大的pas里多修改几次类里的变量名或变量的类型,IDE会出现
assertion failed:amout>=dest-start,file ek_flbuf.cpp, line 315
然后IDE挂掉,如果代码助手和IDE自带的助手同时打开,这样修改几次IDE会停止响应,如果关闭CW助手,只打开IDE的助手一切正常.

2009-9-22 18:46 rarnu
D2007 Up4,公司双核,家里四核,一直好好的

2009-9-27 20:09 zjy
感谢大家的回复

549版本暂时先加了个选项将IDE运行在单核模式下,BDS下默认开启。
以后如果找到更好的解决办法,再更新。

2009-9-27 20:38 wiseinfo
有了D2010,俺就不会考虑用D2009了.

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.