C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[11442] 아... 미치도록 허무한 버그....
박지훈.임프 [cbuilder] 1990 읽음    2006-03-04 00:14
지금 업무 프로그래밍을 위해서 프레임워크를 만들고 있죠.
kbmMW 미들웨어 서버를 만들고 서버와 클라이언트 모두 각 폼 단위로 bpl로 나누었습니다.
그리고 클라이언트 쪽 폼과 서버쪽 서비스를 모두 자동 생성하도록 Tools API로 BDS에 플러그인되는 위저드를 만들었구요.
팀 내에 개발자가 델파이를 쓰는 사람과 C++빌더를 쓰는 사람이 모두 있어서 물론 양쪽 모두 코드가 생성되도록 했습니다.

거의 다 끝나고 마무리중인데...
이 빌어먹을 것이, 델파이 bpl은 아무 이상없이 bpl이 로드되고 실행되는데, C++쪽만 문제가 생기는 겁니다.
bpl을 로드하고 실행도 잘 해놓고, 로드한 함수를 빠져나올 때 Invalid pointer 에러가 나더군요.

bpl을 일단 로드하기만 하면 에러가 나는데, 로드한 시점에서 에러가 나는 것도 아니고 bpl의 기능을 호출하고 나서
에러가 나는 것도 아니고, 해당 함수를 빠져나온 직후에 에러가 나는 겁니다. bpl의 기능을 사용하건 말건 로드하기만 하면
말이죠. 그것도 델파이로 똑같이 구현한 bpl에서는 문제가 안생기고 말입니다.

혹시 bds2006의 버그일까, 생각해도 아무래도 이해가 안되고... 이래저래 너댓시간동안 별 쑈를 다 해봤습니다.
분명히 뭔가 꼬이긴 꼬였는데, bpl에서 의존하는 다른 bpl의 문제일까 싶기도 해서 디펜던시 워커로 뒤져보기도 하고,
머리를 마구 쥐어뜯으면서 괴로와했는데...

결국 찾은 문제의 원인... PATH 환경변수의 문제였습니다.

제가 만든 bpl이 다른 bpl도 동적으로 읽어들이게 되어있지만(당연히 이렇게 해야 함), C++빌더용의 런타임 dll들도
동적으로 읽어들이게 되어있었거든요. 그런데 시스템의 PATH 설정을 보니 델파이7의 bin 디렉토리가 BDS2006의 bin보다
앞에 가 있는 겁니다. 결국 C++빌더2006로 만든 bpl에서 델파이7의 borlndmm.dll이 호출된 겁니다.
borlndmm이 메모리 매니저인데 버전이 다른 넘이 호출되었으니 당근 메모리가 뒤죽박죽 꼬이겠죠.

아... 이렇게 허무한 문제를 만나 몇시간 동안 낭비하고 나니...
정말 미티겠슴다...
김상구.패패루 [peperu]   2006-03-04 00:35 X
푸풋! ㅋㄷㅋㄷ
전 전에 얘기했던 GDI+ 문제 결국 해결 못하고... BCB6로 다시 돌아왔슴다.
이번 업데이트2 나오면 다시 한 번 도전할 예정...
김상구.패패루 [peperu]   2006-03-04 00:41 X
왠지 웃어달라고 쓴 글 같아서...
BCB6로 다시 돌아와야만 했던 나에 비하면 행복한 고민으로 보임... ㅠ ㅠ
양용성 [ysyang]   2006-03-04 13:12 X
일년에 꼭 한번 이상 그런 생각지도 못한 일들이 생겨요 ^^
나중에 다른 후배가 그런 현상이 만약 발생하면 이런거야 하고 말해주면
다른 후배들은 정말 고수라고 말해요 ㅋㅋㅋ.

이런일도 모두 살면서 거치고 지나가야 할 일인듯 해요

+ -

관련 글 리스트
11442 아... 미치도록 허무한 버그.... 박지훈.임프 1990 2006/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.