Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

Unhandled Exception: Microsoft.Diagnostics.NETCore.Client.ServerNotAvailableException: Unable to connect to Process

Microsoft.Diagnostics.NETCore.Client를 사용해,

Microsoft.Diagnostics.NETCore.Client 
; https://www.nuget.org/packages/Microsoft.Diagnostics.NETCore.Client/

테스트로 덤프를 뜨는 shell script를 만들어 실행했더니,

$ cat test.sh
coproc dotnet /app/ConsoleApp1/bin/Release/net8.0/linux-x64/ConsoleApp1.dll

process_id=`/bin/ps -aux | grep "ConsoleApp1.dll" | grep -v "grep" | awk '{print $2}'`

/app/mdump/bin/Release/net8.0/linux-x64/publish/mdump $process_id /app/${process_id}.dmp

분명 "ConsoleApp1.dll" 프로세스는 실행되고 있었지만 WriteDump를 호출하는 부분에서 이런 예외가 발생합니다.

Unhandled Exception: Microsoft.Diagnostics.NETCore.Client.ServerNotAvailableException: Unable to connect to Process 219. Please verify that /tmp/ is writable by the current user. If the target process has environment variable TMPDIR set, please set TMPDIR to the same directory. Please see https://aka.ms/dotnet-diagnostics-port for more information
   at Microsoft.Diagnostics.NETCore.Client.PidIpcEndpoint.GetDefaultAddress(Int32) + 0x1f3
   at Microsoft.Diagnostics.NETCore.Client.PidIpcEndpoint.Connect(TimeSpan) + 0x17
   at Microsoft.Diagnostics.NETCore.Client.IpcClient.SendMessageGetContinuation(IpcEndpoint, IpcMessage) + 0x1c
   at Microsoft.Diagnostics.NETCore.Client.IpcClient.SendMessage(IpcEndpoint, IpcMessage) + 0x1a
   at Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient.WriteDump(DumpType, String, WriteDumpFlags) + 0x36
   at mdump.Program.Main(String[] args) + 0x114
   at mdump!<BaseAddress>+0x1671fc

사실, 원인은 잘 모르겠습니다. 예외 메시지에서 219라고 나온 Process ID도 정확하고, tmp 디렉터리도 분명히 writable인데다, 그렇다고 TMPDIR로 경로를 다르게 바꾼다 해도 문제가 해결되지 않습니다. 그런데, 혹시나 싶어 sleep을 넣었더니,

coproc dotnet /app/ConsoleApp1/bin/Release/net8.0/linux-x64/ConsoleApp1.dll

sleep 1

process_id=`/bin/ps -aux | grep "ConsoleApp1.dll" | grep -v "grep" | awk '{print $2}'`

/app/mdump/bin/Release/net8.0/linux-x64/publish/mdump $process_id /app/$PREFIX-$process_id.dmp

잘 됩니다. ^^;

뭐랄까, WriteDump 시 대상 프로세스 측에 닷넷 런타임의 초기화가 덜 이뤄진 것인지... 라는 짐작만 하게 됩니다.




그나저나, Bash Shell에서 환경변수를 이런 식으로 사용하면,

$ TEST=5
$ PID=100
$ echo "RESULT: $TEST_$PID"
RESULT: 100

의도했던 "5_100"이 아닌 "100"이 나옵니다. 밑줄("_")까지 사라진 것도 희한한데요, 왜냐하면 bash에서 변수는 "$" 접두사로 시작하지만 끝나는 접미사는 없기 때문에 유효한 변수 식별자를 모두 찾아서 치환하기 때문입니다. 즉, "$TEST_"가 하나의 변수로 인식된 것이고 그 값은 (null)이기 때문에 결국 "100"이 출력됩니다.

만약, 변수 영역을 확실히 지정하고 싶다면 중괄호를 이용해 감쌀 수 있습니다.

$ echo "RESULT: ${TEST}_$PID"
RESULT: 5_100




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

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/6/2024]

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

비밀번호

댓글 작성자
 




... [181]  182  183  184  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
556정성태12/16/200724706기타: 22. 인기 순위 정리 : 조회수 1000 회 이상
555정성태12/16/200727766기타: 21. 인기 순위 정리 : 조회수 500 ~ 999회 글 목록
554정성태12/16/200732178기타: 20. 인기 순위 정리 : 조회수 250 ~ 499회 글 목록
553정성태12/16/200732558기타: 19. 인기 순위 정리 : 조회수 100 ~ 249회 글 목록
552정성태12/16/200726024기타: 18. 인기 순위 정리 : 조회수 000 ~ 099 회 글 목록
550정성태12/16/200725401Team Foundation Server: 23. TFS 2005에서 TFS 2008로 마이그레이션 [2]
549정성태12/16/200726590Team Foundation Server: 22. TFS 설정 - 주소를 도메인으로 변경
548정성태12/15/200744036오류 유형: 49. Report Server - 원격 서버에 연결할 수 없습니다
547정성태12/4/200732659.NET Framework: 98. .NET 비동기 Socket과 스레드
546정성태12/4/200723582Team Foundation Server: 21. Microsoft Office가 참조된 경우의 빌드 환경 구성
545정성태12/4/200730797Windows: 27. 눈으로 확인해 보는 ASLR 기능 [1]
544정성태11/25/200726113오류 유형: 48. VS.NET 2008 설치 오류 - Error code 1602 [5]
543정성태11/25/200729481개발 환경 구성: 31. ROBOCOPY XP026 버전 [1]
542정성태11/3/200744439VS.NET IDE: 55. XML/XSLT로 구현하는 매크로 확장 [5]파일 다운로드2
538정성태10/11/200730815스크립트: 10. VBScript - "Sub를 호출할 때는 괄호를 사용할 수 없습니다." [2]
537정성태9/28/200739827개발 환경 구성: 30. 64비트 OS에서의 ChartFX 라이선스 문제
536정성태9/12/200736880.NET Framework: 97. WCF : netTcpBinding에서의 각종 Timeout 값 설명 [11]
535정성태9/11/200734024.NET Framework: 96. WCF - PerSession에서의 클라이언트 연결 관리 [5]
534정성태9/3/200729740개발 환경 구성: 29. VHD 파일 크기 줄이기
533정성태9/2/200732407개발 환경 구성: 28. CA 서비스 - 사용자 정의 템플릿 유형 추가
532정성태9/2/200734423개발 환경 구성: 27. AD CA에서 Code Signing 인증서 유형 추가 방법
531정성태9/2/200730429.NET Framework: 95. WCF에서의 DataTable 사용
530정성태9/1/200726985.NET Framework: 94. WCF 예외에 대한 시행착오
529정성태8/31/200730083.NET Framework: 93. WCF - DataContract와 KnownType 특성 [1]
528정성태8/30/200724383오류 유형: 47. VPC - 네트워크 어댑터 MAC 주소 중복 오류
527정성태8/30/200734891Team Foundation Server: 20. 잠긴 파일을 강제로 해제 [2]
... [181]  182  183  184  185  186  187  188  189  190  191  192  193  194  195  ...