Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 2개 있습니다.)
Linux: 29. 리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우
; https://www.sysnet.pe.kr/2/0/12208

오류 유형: 614. 리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우 (2)
; https://www.sysnet.pe.kr/2/0/12209




리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우 (2)

오랜만에 먼지 낀 라즈베리 파이를 꺼내 지난번에 만들어 둔,

Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드 및 마우스로 쓰는 방법 (절대 좌표, 상대 좌표, 휠)
; https://www.sysnet.pe.kr/2/0/11369

모듈을 테스트하는데 "shutdown" 명령이 동작하질 않습니다. 때마침 배운 것도 있으니, ^^

리눅스 환경에서 C/C++ 프로그램이 Segmentation fault 에러가 발생한 경우
; https://www.sysnet.pe.kr/2/0/12208

실습으로 호출 스택을 떴는데,

root@raspberrypi:/home/pi# gdb /share/rasp_vusb_server.out
GNU gdb (Raspbian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /share/rasp_vusb_server.out...done.

(gdb) r test
Starting program: /share/rasp_vusb_server.out test
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
init_openssl
completed: init_openssl
[New Thread 0xb6989450 (LWP 600)]
[New Thread 0xb6188450 (LWP 601)]
ipResolver prepared
keyboard/mouse opened
[New Thread 0xb5987450 (LWP 602)]
usbServer prepared
Press any key to exit...

Client connection information:
         IP: 172.30.1.37, Port: 54863
[New Thread 0xb4fff450 (LWP 603)]

Client connection information:
         IP: 172.30.1.37, Port: 51683
[New Thread 0xb47fe450 (LWP 604)]
recvBytes == 1

Thread 2 "rasp_vusb_serve" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6989450 (LWP 600)]
std::basic_ios<char, std::char_traits<char> >::widen () at /usr/include/c++/6/bits/basic_ios.h:450
450           { return __check_facet(_M_ctype).widen(__c); }

(gdb) bt
#0  std::basic_ios<char, std::char_traits<char> >::widen () at /usr/include/c++/6/bits/basic_ios.h:450
#1  std::endl<char, std::char_traits<char> > () at /usr/include/c++/6/ostream:591
#2  std::ostream::operator<< () at /usr/include/c++/6/ostream:113
#3  UsbEmulator::ProcessUsbInput () at /home/pi/projects/rasp_vusb_server/UsbEmulator.cpp:105
#4  operator() () at /home/pi/projects/rasp_vusb_server/UsbEmulator.cpp:72
#5  _M_invoke<> () at /usr/include/c++/6/functional:1391
#6  operator() () at /usr/include/c++/6/functional:1380
#7  _M_run () at /usr/include/c++/6/thread:197
#8  0xb6ca39dc in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#9  0xb6b37fc4 in start_thread (arg=0xb6989450) at pthread_create.c:458
#10 0xb6ac4038 in ?? () at ../sysdeps/unix/sysv/linux/arm/clone.S:76 from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

분명히 "cout" 라인에서 Segmentation fault 오류가 발생합니다. 혹시나 싶어 그 라인을 printf로 바꿨더니,

printf("shutting down...\n");
// cout << "shutting down..." << endl;

오호~~~ 잘 동작합니다. 그런데, 이유를 모르겠군요. 혹시나 소스코드(https://github.com/stjeong/rasp_vusb/blob/master/rasp_vusb_server/UsbEmulator.cpp#L51)를 보시고 원인이 짐작되시는 분이 있다면 덧글 부탁드립니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 4/13/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 136  137  138  [139]  140  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1614정성태1/29/201425104.NET Framework: 416. System.Net.Sockets.NetworkStream이 Thread-safe할까?파일 다운로드1
1613정성태1/29/201427007.NET Framework: 415. IIS 작업자 프로세스 재생(recycle)하는 방법 [1]
1612정성태1/29/201423722오류 유형: 219. IIS 500 Internal Server Error - Skydrive에 공유된 경우
1611정성태1/27/201455459.NET Framework: 414. C# - 컴퓨터에서 알아낼 수 있는 고윳값 정리 [3]파일 다운로드1
1610정성태1/26/201439262.NET Framework: 413. C# - chromiumembedded 사용 [11]파일 다운로드1
1609정성태1/26/201422278오류 유형: 218. wsDualHttpBinding + Windows Server 2003인 경우 발생하는 오류
1608정성태1/26/201427686.NET Framework: 412. HttpContext.Current를 통해 이해하는 CallContext와 ExecutionContext [4]
1607정성태1/26/201427621.NET Framework: 411. 유니코드의 "compatibility character"가 뭘까요? [4]파일 다운로드1
1606정성태1/25/201425740오류 유형: 217. 델 베뉴 스타일러스 관련 업데이트 오류 - 5830_Firmware_X267N_WN_1.0.4.1_A01.EXE
1605정성태1/23/201422494개발 환경 구성: 212. Visual Studio Online과 "Monaco" 서비스 연동
1604정성태1/23/201422855오류 유형: 216. 윈도우 서버 백업 - Hyper-V 가상 머신이 백업되지 않는 경우 (2)
1603정성태1/23/201434820개발 환경 구성: 211. Hyper-V - Generation 2 유형의 VM 생성 시 ISO 부팅이 안된다면? [1]
1602정성태1/22/201424976디버깅 기술: 62. windbg - 사용자 모드 원격 디버깅
1601정성태1/22/201428767오류 유형: 215. windbg - Symbol file could not be found. Defaulted to export symbols
1600정성태1/19/201425238.NET Framework: 410. C# - 재귀호출을 스택 자료구조와 반복문을 이용해 대체하는 방법을 Paralle.For와 함께? [1]파일 다운로드1
1599정성태1/18/201433495.NET Framework: 409. C# - 재귀호출을 스택 자료구조와 반복문을 이용해 대체하는 방법 [1]파일 다운로드1
1598정성태1/17/201426902디버깅 기술: 61. NT 서비스 시작 단계에서 닷넷 메서드에 BP를 걸어 디버깅하는 방법
1597정성태1/17/201425491Phone: 9. Xamarin Android에 구글 AdMob 사용하는 방법 [1]
1596정성태1/17/201424142오류 유형: 214. Local SYSTEM 계정으로 실행된 IE에서 다운로드가 안 되는 문제
1595정성태1/16/201421338오류 유형: 213. attrib - Not resetting system file
1594정성태1/15/201423558오류 유형: 212. 마이크로소프트 라이브 계정 로그인 실패하는 경우
1593정성태1/14/201422112오류 유형: 211. ASP.NET 응용 프로그램을 IIS Express에서 디버깅할 때 "Requested registry access is not allowed" 오류 발생
1592정성태1/14/201422063오류 유형: 210. 2대의 AD가 있는 경우 도메인에 컴퓨터 추가를 실패한다면? [1]
1591정성태1/14/201424553오류 유형: 209. DebugDiag: Unable to find mscordacwks_x86_x86_[...version...].dll
1590정성태1/14/201425384오류 유형: 208. VSS Writer - NTDS 오류
1589정성태1/14/201434372Windows: 85. 컴퓨터를 껐는데도 어느 순간 자동으로 켜진다면? [2]
... 136  137  138  [139]  140  141  142  143  144  145  146  147  148  149  150  ...