Bus error (core dumped) 이게 뭔지 잘 모르겠네요..
글쓴이: sosom / 작성시간: 화, 2003/05/13 - 10:17오전
gcc로 컴파일해서 사용하는 소스에 문제가 있는것 같습니다.
인텔 i386 계열 서버(pc)에서 리눅스를 설치한 컴퓨터에서는 잘 돌아갑니다.
그런데 sparc64 기반에 리눅스를 설치를해서 컴파일한 소스를 실행하면 실행이 잘되다가 중간에 "Bus error (core dumped)" 라는 메시지를 한개 남겨두곤는 실행을 멈추어 버립니다.
실행파일이 있는 디렉토리에는 core 라는 파일이 생겨 있구요..
문제를 어디서 어떻게 찾아봐야 할지 감이 안잡힙니다.
인텔계열 컴퓨터에서는 한번도 문제를 일으킨적이 없는거라....
Forums:
SIGBUS는
align이 안 맞는 pointer접근할때 생깁니다..
(다른 이유가 더 있는지는 잘 모르겠군요)
예를 들면, int *를 char *로 캐스팅 한다음 +1하고
다시 int *로 캐스팅 해서 쓰려하면 발생합니다...
저도 여러 플랫폼에 포팅하다가 간혹 BUS error 메시지 를 봤었는데
저도 여러 플랫폼에 포팅하다가 간혹 BUS error 메시지 를 봤었는데..
주로 플랫폼 차이로 인해 테이터 크기나 저장되는 방식이 틀려서 그런현상이 나타나더군요..
소스코드중에 데이타 핸들링 하는 부분은 살펴보심이 ...
예를 들면,,
data type 의 크기가 각 플랫폼에서 동일한지???
메모리 주소를 직접적으로 건드리는 코드가 있는지???
구조체 크기를 각 플랫폼에서 확인해 보고 크기가 동일한지???
뭐...기타 등등..
from saibi
변수를 선언하고 사용하기 까지 중간에 캐스팅을 사용한적은 없구요.
변수를 선언하고 사용하기 까지 중간에 캐스팅을 사용한적은 없구요.
변수 선언부는요..
char pass1[100], pass2[100], dir1[100], dir2[100];
이렇게 선언이 되어 있구요...
pass1, dir1, dir2 등은 scanf()로 값을 받았습니다.
scanf("%100s",pass1);
....
이런식으로 값을 다 입력받았습니다.
중간에 에러 안나구요 잘 통과하는데..
제일 마지막에
scanf("%100s",pass2);
이 값만 입력받으면 "Bus error(core dumped)" 라고 뜨면서 멈추거든요.
입력받을때 5문자 이상을 문자를 입력받으면 멈추고, 4문자 이하로 받으면 잘 수행합니다.
이상한건 이전에 선언한건 제가 선언한 만큼 글이 입력되거든요..
그런데 제일 아랫것만 이상하네요..
토씨 하나 안틀리고 똑같이 했는데 이러는 이유가 무엇일까요..
답이 나올때까지 아무리 쳐다봐도 답을 못찾겠어요...
pass2[101]로 지정해보세요
pass2[101]로 지정해보세요
memset 같은걸루 해당 변수들을 초기화 시키고 사용해 보세요..
memset 같은걸루 해당 변수들을 초기화 시키고 사용해 보세요..
댓글 달기