C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[1022] Assertion: xdrPtr && xdrPtr == *xdrLPP, file xx.cpp, line 2233, 해결방법
박영목.월천 [gsbsoft] 9759 읽음    2011-01-03 01:48
2011년 새로운 시작입니다. 행복하고 즐거운 한해되세요 ^^   물론 돈도 많이 버시고요...


요즘은 아침에 늦게 까지 잡니다. 날씨가 추워서... 회사 다니시는 분들 대단합니다...

너무 게을러지는 느낌...  그래도 편해서 좋기는 하지만... 그런데 불행하게도 1개월 전부터 작업해야 할 일은

발생하는 데 미루고 있습니다.  조금 급해야 일이 되기 때문에... ㅋㅋㅋ

그래도 간단한 TEST나 준비운동은 하고 있습니다...


집에 DVR용도로 PC를 24시간 돌리고 있습니다. 그러다 2~3년 전인가 부터 대문을 PC에서 열도록 해두었습니다.

아이들이 영화를 보거나 게임을 하면 대문 벨소리를 듣지 못하기 때문에... 벨을 누러면 PC에 메세지가 뜨고...

소리도 나게(IdUDPClient1)...  그러다가 회사에서 카메라를 보면서 대문을 열어주게 IdTCPServer1를 추가했습니다.

그러다가 작년부터 스마트폰을 구입하고 분수 원격제어 프로젝트 하면서 실험용으로 간단히 웹에서 대문을 열게

IdHTTPServer1을 추가했습니다. 그런데 이것을 실험으로 만들었지만... 계속 사용하게 되더군요...  ㅋㅋㅋ...

대문을 스마트폰으로 열리 때 기분이 묘합니다. ㅋㅋㅋ 별것 아니지만...  그런데 이것도 불편하더군요...

그래서 제 스마트폰이 WinCE로 돌아가는 데... VC2008을 구해서... Wince용을 만들어 사용하고 있습니다(TCP).

벨을 누르면 벨소리가 납니다. 대문을 열면 되지요... 시간나면 카메라 사진도 뜨게 할 생각입니다. 역시 웹보다는

어플이 편하군요... 아.. 요즙은 앱이라고 합니까?  애플리케이션...  ㅋㅋㅋ


그런데 문제는 3월까지 원격제어 클라이언트용으로 펌프상태, 노즐 TEST, 공연/스케줄시작종료, 실시간영상출력

이런 것을 만들어 줘야하는 데...  TCP로 해야할 것 같은 데....  그냥 윈도우소켓으로 하지 않아도 될 것 같은 생각...

인디TCP는 프로젝트할 때는 잘 사용하지 않는 데...  집에 걸어두고 사용해 보니 그런대로... 충분히 가능할 것

같더군요... 사용법도 간단하고...   그런데... 이게 2년 전부터인가?  여하튼 이런

Assertion: xdrPtr && xdrPtr == *xdrLPP, file xx.cpp, line 2233     런타임 Error가 발생하더군요...

이것 발생하면 커넥트 되었다가 끊깁니다. 통신 두절, 프로그램 종료하고 켜야 됩니다.

1~2일에 한번씩 발생했습니다. 그래서 간단히 12시간 마다 리부팅 되게 해두었는 데...  아~~ 인디로 하려고

하니..  이것이 걱정이 되더군요... 인디에서 일어나는 것인가?  저번에도 검색을 해보았는 데... 해결방법을 찾지

못했습니다. 답답하지 않으니 대강 찾아서 그런 것이라 생각합니다. 이번에는 상황이 다르니까?

찾기더군요...  뭐 윈도우 버그인지... C++Builder6.0 버그인지?  ㅋㅋㅋ   다들... 애매한 버그인 것으로...

VC쪽에서도 발생한다는 글을 본 것 같기도 하고(비슷한 Error)... 

해결방법은...  ㅋㅋㅋ 간단한데...  


제는 항상 릴리즈 상태로 만들고 컴파일 하는 버릇이 있어서...  Project - Option - Compile에서 Release 버튼

이것 누르면 "Disable inline expansions" 부분이 UnCheck 됩니다. 이렇게 되면... 저런 위에 같은 골치 아픈

런타임 Error가 발생합니다.  Release 버튼을 혹 누르면 꼭 "Disable inline expansions" 이곳에 Check 하시기

바랍니다(이 용도는 별로 필요없을 것입니다 기능이 안먹힌다는 게시물도 어디서 본 것 같은데). 

그러면 Error 발생하지 않습니다. 현재 5일간 FULL 테스트하고 있는 데... Error 없고 계속 동작 중입니다.

4일 되니 DVR 프로그램이 죽어버리네요... ㅋㅋㅋ...  그래서 PC는 한번씩 리부팅 되게 만들어야 합니다. ㅋㅋㅋ...


찾은 원문자료.....

http://qc.embarcadero.com/wc/qcmain.aspx?d=5747

Report From: Delphi-BCB/RTL/C++/Exception Handling    [ Add a report in this area ]   
Report #:  5747    Status: Closed
Mishandled Exception Yields Assertion Failure On "xdrPtr" 

Project:  C++Builder Build #:  10.166
Version:    6.0 Submitted By:   Alexander Oss
Report Type:  Crash / Data loss / Total failure Date Reported:  8/27/2003 2:17:47 PM
Severity:    Infrequently encountered problem Last Updated: 2/7/2005 2:56:10 PM
Platform:    95, 98, 2000, NT, XP Internal Tracking #:   
Resolution: Cannot Reproduce (Resolution Comments) Resolved in Build: : None
Duplicate of:  None 
Voting and Rating Overall Rating: (1 Total Rating)

3.00 out of 5
Total Votes: 1 
 

Description
When my code throws an exception in a class method in which there are several nested try-catch blocks, the application generates a message box that says "Assertion failed: xdrPtr && xdrPtr == *xdrLPP, file xx.cpp, line 2233".  After clicking OK, a GPF box comes up, and repeatedly clicking the Close button does not do anything--a reboot is required.  There are several Google groups entries about this xdrPtr which suggest this is a very old unresolved bug.  It appears, however, that recompiling all code with "Disable inline expansions" eliminates the problem.  Steps to Reproduce:
The problem is intermittent, as it results from a thrown exception not being handled properly.  It appears to be related to complex exception handling and inline function expansion.  Workarounds
Select "Disable inline expansions" in the options dialog.  Attachment
None  Comments


내일은 부산에 눈이 온다고 하네요...   춥겠다...  추운 겨울 건강 조심하시고 행복한 하루 되십시오...  감사합니다.

----------------------------------------------------------------------------------------------

추가한 것입니다.

불행한 일이 일어났습니다. 글을 올리고 아침 늦게 일어나서 확인했습니다.

Assertion: xdrPtr && xdrPtr == *xdrLPP, file xx.cpp, line 2233    DialogBox가 나타났습니다.

2010.12.28, 03:37 ~ 2011.1.03, 03:26 Error  거의 6일 만에 일어난 Error 입니다.

문제가 있네요.... 프로그램이 가벼워서... 좀 더 가야 하는 데... 이것 문제가 있습니다.

어딜까? 혹 데이터 양이 많으면 더 빨리 죽는 것은 아닐까? 그럴 가능성이 더 많겠네요...

그러면 24시간 안에도 일어날 수 있다는 것이 되는 데....  정말 "a very old unresolved bug"

이것인가?  아~ 기다린 시간이 아깝다....    인디만 그런 것이면 좋겠다... 서버는 자바 딱인데...

자바로 하기도 뭐하고... 다른 부분이 많아 빌더가 좋은 데... ???    생각을 더하고 TEST

더해야겠습니다.  (C++Builder6.0, Indy9)
김태선 [cppbuilder]   2011-01-08 00:24 X
저는 인디 서버나 인디 소켓을 많이 쓰는데 한번도 저런 에러를 본 일이 없군요.
인디는 명성 그대로 매우 훌륭하고, 잘 만들어진 컴포넌트로 생각됩니다.
저도 빌더6에서 인디9을 주로 애용합니다.

말씀하신 용도로 봐서는 그다지 소켓 사용율도 높지 않은 것 같은데,
위에 있는 영문 자료에도 인디 문제로 특정하지 않은 것으로 봐서
인디의 문제가 아니라, 프로그램의 다른 문제이지 않나 생각됩니다.

김태선 [cppbuilder]   2011-01-08 16:21 X
잠시 찾아 보니, exception 발생시 그 예외 테이블에서 특정한 예외를 못 찾는 경우에 나는 것으로
인디와는 무관하고, 예외처리 블럭 상의 흐름에서 비정상적(?)으로 예외가 처리될려는 경우이지 않는가 생각됩니다.
물론 버그라고 리포트되고 있으니, RTL의 보다 튼튼한 예외 처리 루틴이 되었으면 좋았겠다는 생각은 들지만요.

이 문제가 인라인을 조정함으로써 해결이 되는 것은 아마도,
빌더6의 인라인 함수 확장 부분에 예외에 대한 고려가 되어 있지 않는 것이 아닌가 생각됩니다.
박영목.월천 [gsbsoft]   2011-01-09 00:11 X
태선님 감사합니다 ^^    지금도 TEST 중입니다. 내일 오전 11시면 6일째 이상없이 돌아가는 것입니다.  이번에 조금 수정 것은 제가 예외 처리한 부분을 다 삭제했습니다. 그리고 Compile을  Full Debug로 했습니다. 어디서 잘못일까? 이렇게 10일 정도 넘어간다면 이것으로 해보려고 합니다. 그리고 그 후 이것이 잘 되었을 경우 계속 처음 Error난 코드에서 일부분씩 바꾸어 TEST해 볼 생각입니다. 환경부분인지... 제가 사용한 예외 어디서 인지...      감사합니다.   새해 복 많이 받으세요 ^^
박영목.월천 [gsbsoft]   2011-01-19 02:10 X
위와 같이 컴파일해서 돌려두고 있는 데... 15일째 다운 없이 아주 잘 돌고 있습니다.  이제 어디가 잘못인지 하나씩 알아보아도 될 것 같습니다. 15일이 아까와서 종료시키기가 망설려집니다.  조만간 조금 수정해서 돌려볼 생각입니다.  
박영목.월천 [gsbsoft]   2011-01-23 17:33 X
20일째 이상없이 잘 돌고 있습니다.

+ -

관련 글 리스트
1022 Assertion: xdrPtr && xdrPtr == *xdrLPP, file xx.cpp, line 2233, 해결방법 박영목.월천 9759 2011/01/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.