-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split Variant marshalling tests #53035
Split Variant marshalling tests #53035
Conversation
Initially discovered as part of dotnet/runtimelab#1142 |
Adding a feature flag to a test project is the same as passing it in the product. See https://github.com/dotnet/runtime/pull/52940/files#diff-c25cd81bf60eaf73ca87747baafae7fbfd0ac8a787da03b22382eff45316c9e5 and look for |
I think I overcomplicate PR. I will revert changes, and will create couple projects in same folder. Seems to be that would be easier to maintain. |
@kant2002, thanks for taking a look! Please also take a look at some test changes that are already present for library, and the pending PR, #52940, that has some tests for the runtime. |
9f6bd1e
to
024ce9b
Compare
024ce9b
to
6fa61f1
Compare
Build was failed, since results was not sent to Helix |
I see these 2 tests failing when built-in COM is disabled, Interop\PInvoke\Variant\VariantTestBuiltInComDisabled\VariantTestBuiltInComDisabled.cmd The first test has the following output, BEGIN EXECUTION |
Thanks for pointing me in the error log. I was able to find it afterwards. I see now only one error
Does that means that ComWrappers has slightly different marshalling, or this is a bug? Should I fix that bug as part of PR? |
@kant2002 It isn't clear to me which statement in the test is failing. Can you narrow it down to which one is the issue? |
@AaronRobinsonMSFT this line produce exception
|
Honestly I did not run that. It's just reading logs. I'm yet to build single test project locally. Otherwise it's hard to me to allocate time (~1 hour). If you strictly need me to build, and validate my last statement, let me know. I will compile and troubleshoot in more details. But I think I point location to you properly. |
@kant2002 The issue here is a bug in the In the both case we detect if runtime/src/coreclr/vm/interopconverter.cpp Lines 183 to 205 in 959c327
|
Yes, that would be much appreciated. |
@AaronRobinsonMSFT can you take a look? |
Do not understand test failures. Please advice if this something which I'm responsible with? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kant2002 I would take a step back here and walk through this logic more fully. I think there was some confusion on when this was originally written and support IDispatch
has uncovered that in the ComWrappers
scenario.
/cc @elinor-fung
src/coreclr/vm/interopconverter.cpp
Outdated
@@ -189,17 +189,26 @@ IUnknown *GetComIPFromObjectRef(OBJECTREF *poref, ComIpType ReqIpType, ComIpType | |||
{ | |||
hr = SafeQueryInterface(pUnk, IID_IDispatch, &pvObj); | |||
pUnk->Release(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This Release
shouldn't be called indiscriminately here. We are checking for IDispatch
now and it could fail, but ComIpType_Unknown
must still be returned. Move this release into the success path below.
Do I understand correctly that in discussed part of code, I should follow these rules? ReqIpType = ComIpType_Both
ReqIpType = ComIpType_IDispatch
ReqIpType = ComIpType_IUnknown
|
@kant2002 Yes. |
@AaronRobinsonMSFT is it possible that |
@kant2002 I don't think that |
@AaronRobinsonMSFT then can you take a look? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thank you.
…asm_debugger_and_use_debugger_agent * upstream/main: (597 commits) Fix42292 (dotnet#52463) [mono] Remove some obsolete emscripten flags. (dotnet#53486) Fixed path to projects (dotnet#53435) support ServerCertificateContext in quic (dotnet#53175) Socket: delete unix local endpoint filename on Close (dotnet#52103) [mono] Fix sgen_gc_info.memory_load_bytes (dotnet#53364) Refactor MsQuic's native IP address types. (dotnet#53461) Re-enabled optimizations for gtFoldExprConst (dotnet#53347) Add diagnostic support into sample app and AppBuilders on Mono. (dotnet#53361) Fix issues with virtuals and mdarrays (dotnet#53400) Split Variant marshalling tests (dotnet#53035) Update clrjit.natvis to cover GT_SIMD and GT_HWINTRINSIC (dotnet#53470) remove WSL checks in tests (dotnet#53475) Always spawn message loop thread for SystemEvents (dotnet#53467) add AcceptAsync cancellation overloads (dotnet#53340) Remove unnecessary reference to iOS workload pack in the Mono workload (dotnet#53425) Add CookieContainer.GetAllCookies (dotnet#53441) Remove DynamicallyAccessedMembers on JsonSerializer (dotnet#53235) [wasm] Re-enable Wasm.Build.Tests (dotnet#53433) [libraries] Move library tests Feature Switches defaults to Functional tests (dotnet#53253) ...
These tests split to be able test ComWrappers,
built-in COM enabled/disable mode.
See #50500, #51265