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

비밀번호

댓글 작성자
 




... 91  92  93  [94]  95  96  97  98  99  100  101  102  103  104  105  ...
NoWriterDateCnt.TitleFile(s)
11618정성태7/20/201819811개발 환경 구성: 387. 삼성 오디세이(Odyssey) 노트북의 운영체제를 새로 설치하는 방법
11617정성태7/20/201820441Team Foundation Server: 50. TFS 소스 코드 관리 기능 (5) - "Rollback", "Rollback Entire Changeset"
11616정성태7/17/201819522Graphics: 9. Unity Shader - 전역 변수의 초기화
11615정성태7/17/201823931.NET Framework: 788. RawInput을 이용한 키보드/마우스 입력 모니터링파일 다운로드1
11614정성태7/17/201826852Graphics: 8. Unity Shader - Texture의 UV 좌표에 대응하는 Pixel 좌표
11613정성태7/16/201823347Graphics: 7. Unity로 실습하는 Shader (5) - Flat Shading
11612정성태7/16/201821319Windows: 148. Windows - Raw Input의 Top level collection 의미
11611정성태7/15/201821687Graphics: 6. Unity로 실습하는 Shader (4) - 퐁 셰이딩(phong shading)
11610정성태7/15/201819067Graphics: 5. Unity로 실습하는 Shader (3) - 고로 셰이딩(gouraud shading) + 퐁 모델(Phong model) + Texture
11609정성태7/15/201822129Graphics: 4. Unity로 실습하는 Shader (2) - 고로 셰이딩(gouraud shading) + 퐁 모델(Phong model)
11608정성태7/15/201825805Graphics: 3. Unity로 실습하는 Shader (1) - 컬러 반전 및 상하/좌우 뒤집기
11607정성태7/14/201826180Graphics: 2. Unity로 실습하는 Shader [1]
11606정성태7/13/201826992사물인터넷: 19. PC에 연결해 동작하는 자신만의 USB 장치 만들어 보기파일 다운로드1
11605정성태7/13/201823347사물인터넷: 18. New NodeMCU v3 아두이노 호환 보드의 내장 LED 및 입력 핀 사용법 [1]파일 다운로드1
11604정성태7/12/201822344Math: 47. GeoGebra 기하 (24) - 정다각형파일 다운로드1
11603정성태7/12/201817592Math: 46. GeoGebra 기하 (23) - sqrt(n) 제곱근파일 다운로드1
11602정성태7/11/201818192Math: 45. GeoGebra 기하 (22) - 반전기하학의 원에 관한 반사변환파일 다운로드1
11601정성태7/11/201821218Math: 44. GeoGebra 기하 (21) - 반전기하학의 직선 및 원에 관한 반사변환파일 다운로드1
11600정성태7/10/201819857Math: 43. GeoGebra 기하 (20) - 세 점을 지나는 원파일 다운로드1
11599정성태7/10/201818761Math: 42. GeoGebra 기하 (19) - 두 원의 안과 밖으로 접하는 직선파일 다운로드1
11598정성태7/10/201820970Windows: 147. 시스템 복구 디스크를 USB 디스크에 만드는 방법
11597정성태7/10/201823225사물인터넷: 17. Thinary Electronic - ATmega328PB 아두이노 호환 보드의 개발 환경 구성
11596정성태7/10/201820634기타: 72. 과거의 용어 설명 - OWIN
11595정성태7/10/201826127사물인터넷: 16. New NodeMCU v3 아두이노 호환 보드의 기본 개발 환경 구성
11594정성태7/8/201821032Math: 41. GeoGebra 기하 (18) - 원의 중심 및 접선파일 다운로드1
11593정성태7/8/201820185Math: 40. GeoGebra 기하 (17) - 각의 복사파일 다운로드1
... 91  92  93  [94]  95  96  97  98  99  100  101  102  103  104  105  ...