{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/16274","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/16274/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/16274/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/16274/events","html_url":"https://github.com/dotnet/coreclr/issues/16274","id":295427444,"number":16274,"title":"Some questions about profiler API","user":{"login":"ww898","id":2767027,"avatar_url":"https://avatars3.githubusercontent.com/u/2767027?v=4","gravatar_id":"","url":"https://api.github.com/users/ww898","html_url":"https://github.com/ww898","followers_url":"https://api.github.com/users/ww898/followers","following_url":"https://api.github.com/users/ww898/following{/other_user}","gists_url":"https://api.github.com/users/ww898/gists{/gist_id}","starred_url":"https://api.github.com/users/ww898/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ww898/subscriptions","organizations_url":"https://api.github.com/users/ww898/orgs","repos_url":"https://api.github.com/users/ww898/repos","events_url":"https://api.github.com/users/ww898/events{/privacy}","received_events_url":"https://api.github.com/users/ww898/received_events","type":"User","site_admin":false},"labels":[{"id":196940783,"url":"https://api.github.com/repos/dotnet/coreclr/labels/area-Diagnostics","name":"area-Diagnostics","color":"d4c5f9","default":false},{"id":172143008,"url":"https://api.github.com/repos/dotnet/coreclr/labels/question","name":"question","color":"1d76db","default":true}],"state":"open","locked":false,"assignee":{"login":"noahfalk","id":6243776,"avatar_url":"https://avatars0.githubusercontent.com/u/6243776?v=4","gravatar_id":"","url":"https://api.github.com/users/noahfalk","html_url":"https://github.com/noahfalk","followers_url":"https://api.github.com/users/noahfalk/followers","following_url":"https://api.github.com/users/noahfalk/following{/other_user}","gists_url":"https://api.github.com/users/noahfalk/gists{/gist_id}","starred_url":"https://api.github.com/users/noahfalk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/noahfalk/subscriptions","organizations_url":"https://api.github.com/users/noahfalk/orgs","repos_url":"https://api.github.com/users/noahfalk/repos","events_url":"https://api.github.com/users/noahfalk/events{/privacy}","received_events_url":"https://api.github.com/users/noahfalk/received_events","type":"User","site_admin":false},"assignees":[{"login":"noahfalk","id":6243776,"avatar_url":"https://avatars0.githubusercontent.com/u/6243776?v=4","gravatar_id":"","url":"https://api.github.com/users/noahfalk","html_url":"https://github.com/noahfalk","followers_url":"https://api.github.com/users/noahfalk/followers","following_url":"https://api.github.com/users/noahfalk/following{/other_user}","gists_url":"https://api.github.com/users/noahfalk/gists{/gist_id}","starred_url":"https://api.github.com/users/noahfalk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/noahfalk/subscriptions","organizations_url":"https://api.github.com/users/noahfalk/orgs","repos_url":"https://api.github.com/users/noahfalk/repos","events_url":"https://api.github.com/users/noahfalk/events{/privacy}","received_events_url":"https://api.github.com/users/noahfalk/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-02-08T08:44:19Z","updated_at":"2018-03-19T21:12:20Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"1. Our profiler excavates static variable values during the GC finished event and everything works perfectly till the GC where the first collectible assembly was silently unloaded. And we get crash after that. Now we disabled static variables for collectible assemblies. How to detect the moment during GC after that I can understand that the module was collected?\r\n\r\n2. Our profiler gathers field names information in every object and assign it to incoming references. It's a bit complicated algorithm which depends on some current CLR undocumented behavior. The most important is: I expect that you process arrays from lower index to high one during GC. I did it because the alghoritm is O(x^2) and it's very very slow for large arrays.\r\n\r\nThe last one trouble is virtual references in objects from collectible assemblies. CLR add the virtual reference to `System.Reflection.LoadAllocator` object as first element of array of references in profiling API. It works for array types and most object types except following types and its inheritors (because there is the reflection in native for manages fields):\r\n- `System.RuntimeType` see `m_keepalive`\r\n- `System.Reflection.RuntimeAssembly` see `m_syncRoot`\r\n- `System.Delegate` see `_methodBase`\r\n\r\nCould you please make our live more simple - extend profiler API to get ability to get additional information for references such as:\r\n- the array index\r\n- the virtual collectible reference flag\r\n- the real offset in object?\r\n\r\n3. Add ability to resolve `ModuileID`+`mdTypeRef` to `ModuleID`+`mdTypeDef`."},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/374379274","html_url":"https://github.com/dotnet/coreclr/issues/16274#issuecomment-374379274","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/16274","id":374379274,"user":{"login":"lt72","id":8418852,"avatar_url":"https://avatars2.githubusercontent.com/u/8418852?v=4","gravatar_id":"","url":"https://api.github.com/users/lt72","html_url":"https://github.com/lt72","followers_url":"https://api.github.com/users/lt72/followers","following_url":"https://api.github.com/users/lt72/following{/other_user}","gists_url":"https://api.github.com/users/lt72/gists{/gist_id}","starred_url":"https://api.github.com/users/lt72/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lt72/subscriptions","organizations_url":"https://api.github.com/users/lt72/orgs","repos_url":"https://api.github.com/users/lt72/repos","events_url":"https://api.github.com/users/lt72/events{/privacy}","received_events_url":"https://api.github.com/users/lt72/received_events","type":"User","site_admin":false},"created_at":"2018-03-19T21:12:20Z","updated_at":"2018-03-19T21:12:20Z","author_association":"MEMBER","body":"@noahfalk FYI"}}
{"actor":{"display_login":"lt72"}}