本公司使用VWG、Caslte ActiveRecord、CSLA.net 、Quantz.net 等组件做为公司的开发基础,自2007年以来,一直工作正常,但最近(2015.12月)以来,打开MDAA项目时,VS 总是自动 崩溃(Crashed)后,自动启动,追踪调试后,只得到了 "StackOverflow", 堆栈溢出。

知道了这个问题,但总是找不到原因应该如何处理:尝试的方法有:

1、更新VS update5 ,故障依旧;

2、更新 VWG 至 10.0.4,故障依旧;

3、上VWG论坛中 啃英文发现有类似的问题反映,但只叫我们 引用正确的版本,而且问题 的发生场景也不大相同,先后清理 程序集的 缓存后,重启系统问题依旧。

4、新建了 VWG 项目,并打开设计器,一切正常,百思不得其解。

5、在MDAA中 有一个Form1 窗口,偶尓打开可以成功,但过不了 一分钟,什么也不动,故障依旧。

6、怀疑 git 扩展之间有冲突,把 扩展关了,故障依旧。

7、静静的分析了 一天,总觉得应该与VWG有关系,其它的都正常,一直在用,没有反映出什么问题,最近Win10自动升级后才出现的这个问题(也不知道Windows10升级都变更了些什么)。

8、把整个过程 反思了一遍,觉得应该是 win10自动升级后,改变了VS 或者 .net 以往类库的加载运行方式,以前都是正常的,现在出了问题,而新建的VWG项目却是正常的,为什么呢?

9、带着这个问题,把PSI项目打开(引用 MDAA 类库),再打开项目中的 窗口或者用户控件,一切OK,因此 可以确定问题出在 MDAA中代码上,更确切的说出在 VWGHelper上,即VWG的扩展方法中。

最后锁定了故障源,变更代码为:

if( _IsCopiedEmbededSource || context == null)

{  return;   }

最后问题处理,一切OK,整个问题的耗时,三天。每天17小时。 这三天什么也没做成,您说 卖给客户的软件 只算最终的代码技术含量,背后要处理类似的问题何至千百,我的客户(上帝),算上这些付出,价格已经非常超值了。

问题并没有完全解决,打开设计器时,可以打开了,但如果 要显示 Toolbox时,VS2013 故障依旧。

1、新建了VWG项目,新建控件、窗体都正常。

2、在控件、窗体中 添加 控件时,都正常。

3、在PSI项目中打开控件或者窗体,再显示 ToolBox 时,也正常,但在 MDAA中 还是 故障退出。

4、在WinForm 中打开窗体与控件时,都是正常的。

5、至此,问题可以确认在 MDAA VWGUI 项目中,在VS 反射项目中有哪些控件时出错。

VS2013 抛出 stackoverflow exception 的追踪的更多相关文章

  1. dubbo rpc调用抛出的Exception处理

    关于dubbo的Exception堆栈被吃处理,网上已经有比较多的解决方法,在我们的应用场景中,不希望RPC调用对方抛出业务exception,而是通过Resp中的errorCode,errorMsg ...

  2. 【M12】了解“抛出一个exception”与“传递一个参数”或“调用一个虚函数”之间的差异

    1.方法参数的声明语法和catch语句的语法是一样的,你可能会认为主调方法调用一个方法,并向其传递参数,与抛出一个异常传递到catch语句是一样的,是的,有相同之处,但也有更大的不同. 2.主调方法调 ...

  3. 从constructor中抛出exception后,constructor会返回null吗?

    刚才琢磨这个问题主要是在想,如果constructor抛出了exception,那么返回的object是什么一个情况呢?如果我这个object中有一些关键的资源没有初始化,比如说Database co ...

  4. WCF服务创建与抛出强类型SOAP Fault

    原创地址:http://www.cnblogs.com/jfzhu/p/4060666.html 转载请注明出处 前面的文章<WCF服务的异常消息>中介绍过,如果WCF Service发生 ...

  5. Spring异常抛出触发事务回滚

    Spring.EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 /** * 如果在spring事务配置中不为切入点(如这里的切入点可以定义成test*) ...

  6. JAVA异常的捕获与抛出原则

    在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...

  7. 【开发技术】java异常的捕获与抛出原则

    在可能会出现exception的地方,要使用try-catch或者throws或者两者都要.我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-cat ...

  8. (转)spring异常抛出触发事务回滚策略

    背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼. spring异常抛出触发事务回滚策略 Spring.EJB的声明式事务默认情况下都是在抛出unchec ...

  9. java的异常抛出和String类常用方法

    一.异常抛出 异常是程序的异种非错误的意外情况,分为运行期异常(RuntimeException)和编译期异常(CheckedExcption) 处理异常可以用try——catch或自定义 impor ...

随机推荐

  1. iOS本地推送与远程推送

    原文在此 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程 ...

  2. Nexus Repository Manager OSS 代理 p2 源

    用maven管理构建Eclipse RCP项目时,可能会用到p2源: http://download.eclipse.org/releases/mars/ 内网用户肯定希望能通过nexus服务器代理, ...

  3. CVEH项目观察与思考

    2013-07-01 项目进展: 从启动至今已有三个星期,但是进展甚慢,取得的进展有: A. 封装成库,和HB调用库的接口有些进展,但进未完成 B. 整个框架,类视图,调用视图,只有两三层的进展: C ...

  4. C#解决验证码问题

    string ss = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";            R ...

  5. SQL Server调优系列进阶篇(如何维护数据库索引)

    前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...

  6. n枚硬币问题(找假币)

    问题描述: 在n枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重.可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币. 解题思路: ...

  7. Fatal error: Call-time pass-by-reference has been removed

    下面的代码报错:Fatal error: Call-time pass-by-reference has been removed function myFunc($arg) { do somethi ...

  8. Activity中使用Intent实现页面跳转与参数的传递(转)

    新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content. ...

  9. win7下Qt5使用mysql C++编程配置

    先下载mysql的库文件链接:http://files.cnblogs.com/files/xiaobo-Linux/mysql.zip 把两个文件放入 Qt目录\Qt5.5.0\5.5\mingw4 ...

  10. Recovering deleted Records

    [原文] recovering-deleted-records Solution That requires an actual timestamp (or date), you're passing ...