Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Added 'standalone' option when building tests for ilasm roundtrip - #93037

Closed
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone
Closed

Added 'standalone' option when building tests for ilasm roundtrip#93037
TIHan wants to merge 8 commits into
dotnet:mainfrom
TIHan:ilasm-roundtrip-build-as-standalone

Conversation

@TIHan

@TIHanTIHan commented Oct 4, 2023

Copy link
Copy Markdown
Contributor

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Current pipeline run: https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results

@ghostghost assigned TIHanOct 4, 2023
@ghostghost added the area-Infrastructure-coreclr Only use for closed issues label Oct 4, 2023
@ghost

ghost commented Oct 4, 2023

Copy link
Copy Markdown

Tagging subscribers to this area: @hoyosjs
See info in area-owners.md if you want to be subscribed.

Issue Details

Set the environment variable BuildAsStandalone=true when we are building tests for ilasm roundtripping.

Author:TIHan
Assignees:TIHan
Labels:

area-Infrastructure-coreclr

Milestone:-

@markples

Copy link
Copy Markdown
Contributor

Can you please show a lab run with this ilasm flag running?

- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS
displayName: Build managed test components
- ${{ if in(parameters.testGroup, 'ilasm') }}:
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout standalone skiptestwrappers $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testTreeFilterArg) ci /p:TargetOS=AnyOS

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should create an $(ilasm) so that you don't duplicate the entire script line. It will be easy for this to go stale.

@markples

Copy link
Copy Markdown
Contributor

I have some concerns about doing this. I think you may run into trouble with the "two pass" nature of building tests, but testing ilasm will determine if that is an actual issue. But also I'm not sure that you can just change the build arguments and still have coherent pipelines. For example, the artifact name is going to be the same. This means that normal and ilasm builds can't be in the same pipeline, which perhaps is already the case but would be an unfortunate dependency. Also, typically one has expectations about what is in a particular artifact based on the name. There may be additional issues with the overall pipelines so it would be good to get a review from someone more knowledgeable than me.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

Can you please show a lab run with this ilasm flag running?

https://dev.azure.com/dnceng-public/public/_build/results?buildId=427945&view=results should be that

@markples

Copy link
Copy Markdown
Contributor

I don't see any changes compared to normal. The test artifacts zip has main-less dlls, and the test runs appear to be ildasm/ilasm-ing the test executors and then calling tests in dlls.

@TIHan

TIHan commented Oct 5, 2023

Copy link
Copy Markdown
ContributorAuthor

image
image

@markples This is what I get when I compile a test as standalone and do run.cmd x64 checked ilasmroundtrip. I guess the test wrapper is still referring to the old assembly?

@markples

Copy link
Copy Markdown
Contributor

I don't know what you mean about the test wrapper. I see no evidence that your change has changed any behavior in the lab.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

I don't know what you mean about the test wrapper

Meaning the test wrapper is dependent on Runtime_92590.dll and not Runtime_92590.asm.dll.

@markples

Copy link
Copy Markdown
Contributor

.asm.dll is created during test execution in the .cmd/.sh files. The new wrappers depend on the .dlls for intra-proc tests, but the build system has no knowledge of the .asm.dll thing happening at test execution time. The new wrappers and the old infrastructutre depend on calling the .cmd/.sh files and have no knowledge of what is being executed within them.

However, the problem here is deeper than that. I don't see entry points in the individual tests outside of ones that normally get them via RequiresProcessIsolation. There isn't anything for the roundtripping infrastructure to invoke even if it tried.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

@markples since I merged #90110 - this will actually replace the original assembly in its original location, so that might mean this could work? i.e. there are no .asm.dlls being created alongside the original .dll.

@markples

Copy link
Copy Markdown
Contributor

I don't see how that matters. I still don't think the roundtripping logic is even being called. If you look at any of the logs, you'll see something like this:

01:14:15.219 Running test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
PASSED
01:14:15.222 Passed test: JIT/Directed/coverage/oldtests/zeroinit_r/zeroinit_r.dll
01:14:15.227 Running test: JIT/Directed/coverage/flowgraph/gcpoll/gcpoll.cmd
Return code: 0
Raw output file: C:\h\w\AABC097D\w\ACF4097A\uploads\coverage\flowgraph\gcpoll\output.txt
Raw output:
BEGIN EXECUTION
C:\h\w\AABC097D\p\ildasm.exe /raweh /unicode /out=gcpoll.dasm.il gcpoll.dll

For gcpoll, you see the ildasm logic kick in. This is due to it being a RequiresProcessIsolation test. But the tests before it, like zeroinit_r aren't doing that.

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Well, it's now getting errors with EXEC : error : No entry point declared for executable [C:\work\runtime\src\tests\Regressions\coreclr\22021\provider.ilproj] [C:\work\runtime\src\tests\build.proj]

@TIHan

TIHan commented Oct 6, 2023

Copy link
Copy Markdown
ContributorAuthor

Ok, I see that is only does it for RequiresProcessIsolation. It's interesting because if I only build a single test that doesn't have RequiresProcessIsolation, and I have BuildAsStandalone=true, I can run the roundtrip test on it.

@markples

Copy link
Copy Markdown
Contributor

2 things going on here

  • Individual tests work locally but not in the lab because this PR is not sufficient to set up the lab.
  • I believe that the break was exposed by test merging of src\tests\Regression, which removed the OutputType=Library of that test, which was following in the footsteps of my CLRTestKind cleanup. The global setting BuildAsStandalone can't tell the difference between a normal test and a library for a test. (A normal test is a library except that RequiresProcessIsolation and BuildAsStandalone add an entry point and promote it to an executable.)

@TIHan

Copy link
Copy Markdown
ContributorAuthor

@markples I think this is now running the roundtrip tests, though failing in Unix, the Windows versions passed: https://dev.azure.com/dnceng-public/public/_build/results?buildId=432469&view=logs&j=bc936583-455b-59a6-ba6a-b6595d929238&t=b93c0282-5af1-5880-fe4a-b9ec04a10b26

@TIHan

TIHan commented Oct 10, 2023

Copy link
Copy Markdown
ContributorAuthor

Ah, but now I see it only did it for RequiresProcessIsolation tests. Just checked Kusto and looked at the JitBlue tests and there are only a handful of them. Which was said before, this happens by default; means the standalone didn't do the right thing.

@TIHan

Copy link
Copy Markdown
ContributorAuthor

Closing in favor of #93368

@TIHanTIHan closed this Oct 11, 2023
@ghostghost locked as resolved and limited conversation to collaborators Nov 11, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@TIHan@markples