문제

이것은 하루는 이상한 행동입니다.

우리는 Win32 프로젝트로 만든 Delphi2007,이는 호스트.NET runtime 및 호출합니다.NET 를 표시하는 새로운 형태의 일부분으로 전환기를 맞이하고 있습니다.

최근에는 우리가 시작했 발생하는 예외에서 겉으로는 임의의 위치와 우리의 코드:산 오버플로나 저류.

스택 추적의 하나 이러한 다음과 같습니다:

at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.RunDialog(Form form)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at Gatsoft.Gat.UI.Windows.Forms.Remanaging.RemanageForm.DelphiOpenInNewMode(String employeeCode, String departmentCode, DateTime date) in C:\Dev\VS.NET\Gatsoft\Gatsoft.Gat.UI.Windows\Forms\Remanaging\RemanageForm.Delphi.cs:line 67

Visual Studio 솔루션,하나의 눈여겨 보시기 바랍 클래스 라이브러리(ie.에 끌어 모든 참조 할 수 있습니다),가정을 디버깅,프로그램 타겟에 대한 델파이 프로젝트를 출력합니다.이할 수 있습니다.순 코드에서는 Visual Studio,비록 주요 프로그램은 델파이로 작성.

에만 문제가 발생합에서 실행할 경우 디버거하지 않으면 우리는 그냥 exe 파일을 실행합니다(중 하나를 통해 탐색기로 바로 가기,또는 Ctrl+F5 Visual Studio).

거기에는 분명히 더 스파이웨어에는 기계(로 암시하여 ).

다른 것을 우리가 확인할 수 있습니다?


편집: 그것처럼 보인다.NET 디버거가 이것을 가능하게하는 SNaN 플래그,델파이 디버거하지 않습니다.우리는 이 추가 조사,하지만 지금은을 받아들인다 @Lorenzo Boccaccia's answer.

분명히 해결

Ok,그것은 다음과 같 우리가 마지막으로 못을 박는 이 문제를 해결합니다.문제를 시작 발생하지 않고 디버거를 연결뿐만 아니라,우리의 테스터,그래서 우리는 우선순위 문제 방법이다.

마지막으로 우리가 발견한 한 가지 일반적인 문제는 컴퓨터 문제가 있었고,그들은 Dell Lattitude D620 노트북 NVIDIA Quadro NVS110M 와,오래 된 드라이버 시스템에서 이미지를 제공하는 데 사용되는 노트북에서,2006 년에 다시.

내가 발견 중 하나는 웹에 게시만 난 잃은 url 을 할 때 내가 다시 부팅 업데이트 할 디스플레이 드라이버했다.NET 서비스의 충돌할 때 주로 기계되었는 바쁜 무언가를 하습니다.하나의 방법으로 재현하는 자신의 문제를 명령 프롬프트를 열 C:\고 DIR /S 을 강제로 엄청난 양의 화면을 업데이트를 실행하는 것 충돌이 발생합니다.

그는 너무 NVIDIA 비디오 카드입니다.

문제 내 컴퓨터에서 발생하는 대략 2-4 벤처 기업의 우리의 프로그램이지만,후에 비디오 드라이버를 업데이트 했 123 성공적인 벤처 기업없이 문제입니다.(BTW 할 수 있습니다 오토 핫키 이러한 것들).

그래서 그것처럼 우리는 범인을 찾는 올드/버그 NVIDIA 드라이버입니다.

데 이 질문에 그래서 아마 누군가에서 미래를 저장할 수 있습니다.

지금,당신은 나를,나는 갈에서 울고 있습니다.

저주 때문!

나가야 저주 때문이다.내가 게시 위의 업데이트 보다는 동료 노트북,실패 후 업데이트 비디오 드라이버입니다.

여전히,나는 양의 문제는 외부의 우리 이제 응용 프로그램,그래서 그것은 단지 남아있을 파악하는 특정한 것들을 업데이트합니다.


추가 업데이트:Ok,my 기계를 분명히 고정,그렇지 않은 동료들과 기계입니다.지금까지 우리는데,BIOS 에 칩셋 드라이버,그리고 현재 XP SP3 에이에 그것의 방법입니다.

화상에서 테스트를 수행됩니다 오늘 밤도 앱이 남아 있을 것입니다 하룻밤을 시작으로,문제가 잘 하거나 시작하는 동안,또는에서 처음 일부 WinForms.순 코드는 실행되었다.이 응용 프로그램은 주로 델파이 Win32 응용 프로그램이지만,그 호스트.NET runtime,그리고 문제와 관련이 있을 것이다.순 코드입니다.때 우리는"시작"니다.NET 런타임 문제가 나타날 수 있는,또는 때 우리는 불이 처음이 아니다.순수한 창에서 Win32 다음 그것이 나타날 수 있습니다.


통계적으로 나를 사용하려면 이 코드는 지금이다.밤 응용 프로그램이 시작되었습 3051 시간 오류 없이,반면 내가 전에 업데이트 비디오 드라이버 그것으로 추락한 모든 2-4times.

Prodded 고(!/?)

이 버그-고치는 시련을 것 같은 느낌이 든 의사는 다음과 같은 대화가 계속된다:

Doc: Does this hurt?
Me: No...
Doc: What about now?

나 prodded 고 찌르고 응용 프로그램을 마지막으로 생각 나는 뭔가를 발견했습을 소개 하는 이 문제를 해결합니다.

우리의 응용 프로그램에서 우리는 호스트.NET runtime,에서 Delphi2007Win32 응용 프로그램에서 우리의 접착제 코드에 우리는 다음과 같은 라인(지금):

  rc := CorBindToRuntimeEx('v2.0.50727', 'wks',
  STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN or STARTUP_CONCURRENT_GC,
  @clsid, @iid, UnkRuntimeEngine);

두 상수 중간에 있었다 원래 그냥 0 미 선택의 기본값.이 변경이 도입되었고 몇 개월 전에 문제를 천천히 들어온다에서는 후에 저희이다.변화에 도입되었을 격려하기 위해 개미 프로파일드의 Win32 응용 프로그램 호스팅됩니다.NET runtime 렇게하기 위해서는 성능 프로파일링 및 변경 내용 우리는 다시 도입한 다음에는 작업이다.또한 문제를 연산 오버플로우/언더 천천히 점점 더 악화되어 그래서 내 문제가 나타나지 않았다면 변경후지의 변화는 우리가 않았다.

또한,때문에 우리는 우리만(원)을 보았을 때 문제가 실행을 통해 디버거,우리는 생각은 뭔가 잘못되었다는 Visual Studio 및/또는 Delphi.

어쨌든 통계적으로 이제 브라우저에 하나의 화면을하고 반복되는 위로 또는 아래로 스크롤하여 트리거 javascript(분명히 필요로하기 위해 트리거합 bug),다음을 할 수 있었을 성공적으로이 응용 프로그램을 시작 726 번 0 에 전화를,그리고 그것은 충돌 5 17 번으로 두 개의 상수 있다.

Doc: Does this hurt?

고자하지 않을 얻으로 만든 사람을 변경하는 첫 번째 장소입니다.나는 범죄자고 싶어 하는 익명...

도움이 되었습니까?

해결책

디버 버전의 링크 dll 수 있습으로 컴파일된 신호 nan 지원을 참조하십시오 http://blogs.msdn.com/oldnewthing/archive/2008/07/02/8679191.aspx 에 대한 예제는 이 문제를 해결합니다.

는 heisenbug 에 의해 발생했 변수 초기화되지 않은,여기에 있을 수 있습 된 dll 사용 snan 기능의 cpu 및 잊고 그것을 사용하지 않으로 돌아

다른 팁

하 오류 발생 여전히 발생할 경우 디버거를 연결한 후에 응용 프로그램을 시작?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top