- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5.2k
Split Variant marshalling tests #53035
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
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
          
        
      | if (ReqIpType & ComIpType_Dispatch) | ||
| { | ||
| 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