SIGBUS(BUS_OBJERR)은 언제 발생하나요?
글쓴이: bylkuse / 작성시간: 목, 2008/01/03 - 3:57오후
MPC8560에서 돌아가는 프로그램이구요
다음과 같은 굉장히 단순한 code에서 SIGBUS(BUS_OBJERR)가 발생합니다.
memset(a,0,300000);
memcpy(a,b,2000);
a는 global로 선언된 배열이고, b는 calloc을 이용해서 dynamic하게 할당된 영역입니다.
unsigned char a[300000];
b = (unsigned char *)calloc(2000,10);
이런 형식으로...
100% 발생하는 것은 아니고, 간혹 발생하는데
발생하는 code는 항상 위에 언급한 두줄입니다.
그리고 memset보다는 memcpy에서 주로 발생합니다.
참고로, 두줄은 실제 code상으로도 연속적으로 위치해 있습니다.
SIGBUS signal중에서 BUS_ADRALN 이나 BUS_ADRERR와 관련된 내용은 있는데
BUS_OBJERR와 관련된 내용은 없어서 질문을 올립니다.
경험 있으신분은 답변부탁드립니다.
Forums:
댓글 달기