Skip to content
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

ImageSharp-rc1 fails to build on UWP Release ARM #1204

Closed
3 of 4 tasks
Sergio0694 opened this issue May 22, 2020 · 18 comments · Fixed by #1391
Closed
3 of 4 tasks

ImageSharp-rc1 fails to build on UWP Release ARM #1204

Sergio0694 opened this issue May 22, 2020 · 18 comments · Fixed by #1391
Labels
area:aot help needed upstream-issue Issue depends on upstream dependency fix.
Milestone

Comments

@Sergio0694
Copy link
Member

Sergio0694 commented May 22, 2020

Possibly related to #987 and #828

Prerequisites

  • I have written a descriptive issue title
  • I have verified that I am running the latest version of ImageSharp
  • I have verified if the problem exist in both DEBUG and RELEASE mode
  • I have searched open and closed issues to ensure it has not already been reported

Description

Building a UWP app in Release ARM fails to build when using ImageSharp-rc1, and the UWP compiler version 6.2.10 (latest). Downgrading to -beta007 works for now.
Here's the issue I'm getting:

ILT0005: 'C:\Users\Sergio.nuget\packages\runtime.win10-arm.microsoft.net.native.compiler\2.2.8-rel-28605-00\tools\ARM\ilc\Tools\nutc_driver.exe @"C:\Users\Sergio\source\repos\ImageSharpRepro\ImageSharpRepro\obj\ARM\Release\ilc\intermediate\MDIL\ImageSharpRepro.rsp"' returned exit code -1073741819 ImageSharpRepro

Building Release x86, x64 and ARM64 works fine 🤷‍♂️

Pinging @MattWhilden for his infinite .NET Native knowledge and wisdom 🧙‍♂️

Steps to Reproduce

  • Create a new UWP project (19041 target, 17763 minimum)
  • Add the ImageSharp-rc1 package
  • (Try to) build in Release ARM

System Configuration

  • ImageSharp version: ImageSharp-rc1
  • Other ImageSharp packages and versions: .NETCore.UniversalWindowsPlatform 6.2.10
  • Environment (Operating system, version and so on): Windows 10 x64 19041.264
@Sergio0694 Sergio0694 added this to the 1.0.0 milestone May 22, 2020
@Sergio0694 Sergio0694 changed the title ImageSharp.Drawing-008 fails to build on UWP Release ARM ImageSharp-rc1 fails to build on UWP Release ARM May 22, 2020
@MattWhilden
Copy link

Thanks for tagging me. I've opened an issue with the optimizer team and they should take a look at it in the near future. The ID in our internal DB is 1130988 in case that's useful when talking to other .NET folks.

@MattWhilden
Copy link

Oh, forgot to mention. I haven't played with it but I'd be surprised if you couldn't work around the issue by disabling compiler optimizations. It's hard to narrow down what's problematic immediately but something like this in Properties\Default.rd.xml might get you unstuck:

<Assembly Name="SixLabors.Core.dll" DoNotOptimize="true" DoNotInline="true" />
<Assembly Name="SixLabors.ImageSharp" DoNotOptimize="true" DoNotInline="true" />

@Sergio0694
Copy link
Member Author

Hey @MattWhilden - that's great, thank you for looking into this! 😊

I tried your .rd.xml fix and it did in fact build successfully! If it helps, I got this output:

1>------ Rebuild All started: Project: ImageSharpRepro, Configuration: Release ARM ------
1>  ImageSharpRepro -> C:\Users\Sergio\source\repos\ImageSharpRepro\ImageSharpRepro\bin\ARM\Release\ImageSharpRepro.exe
1>  Processing application code
1>C:\Users\Sergio\source\repos\ImageSharpRepro\ImageSharpRepro\Properties\Default.rd.xml(26): warning : ILTransform : warning ILT0027: Assembly name 'SixLabors.Core.dll' failed to bind.
1>  Computing application closure and generating interop code
1>    Loading 59 modules...
1>    Generating code...
1>    Interop code generated.
1>  Compiling interop code
1>  Generating System.Reflection.DispatchProxy proxy code.
1>  Cleaning up unreferenced code
1>  Generating native code
1>  Generating fixups for native code
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

In particular, that warning sounds interesting:

warning : ILTransform : warning ILT0027: Assembly name 'SixLabors.Core.dll' failed to bind.

At this point I think I'll just drop the ARM builds entirely for now though, as they're not really used anywhere anyways (there are no Windows 10 ARM32 devices, as far as I know), and I'd rather not lose performance on x86, x64 and ARM64 due to those skipped optimizations/inlinings.

So glad this issue is only happening on ARM32! 😄

@MattWhilden
Copy link

Ah, maybe I misremembered which binaries get pulled in. Might be a completely spurious. :-D

@JimBobSquarePants
Copy link
Member

SixLabors.Core.dll

@Sergio0694 That binary shouldn't exist now!

@JimBobSquarePants
Copy link
Member

Is there a way we can get more information to isolate a source of the issue?

@JimBobSquarePants JimBobSquarePants added the upstream-issue Issue depends on upstream dependency fix. label Oct 13, 2020
@JimBobSquarePants
Copy link
Member

We need someone to raise an issue upstream here for us to track. We can't fix issues with the AOT compiler.

@Sergio0694
Copy link
Member Author

Is there a way we can get more information to isolate a source of the issue?

Whoops, missed that, sorry!
Yeah we can create a .NET Native repro to send to the team (instructions here), that worked for me in the past 😄

@JimBobSquarePants
Copy link
Member

Thanks @Sergio0694 !!

@Sergio0694
Copy link
Member Author

Of course! Let me know if you need help with that! 😊

@JimBobSquarePants
Copy link
Member

I'll need you to take point on this if you can please. I have no idea what I'm doing.

@Sergio0694
Copy link
Member Author

Sergio0694 commented Oct 13, 2020

@JimBobSquarePants Alright, made the .NET Native repro, would you like me to DM you the file so you can send that yourself or do you want me to send an email to the .NET Native support team with you in cc.? In that case DM me your email address 😄

EDIT: also I forgot, I tried the workaround that Matthew suggested, but without the old SixLabors.Core.dll, and it works!
As in, adding this to the .rd.xml file fixes the Release ARM build:

<Assembly Name="SixLabors.ImageSharp" DoNotOptimize="true" DoNotInline="true" />

@JimBobSquarePants
Copy link
Member

I wouldn't consider that a reasonable workaround as people want the optimization. I had to do the same when debugging on the PI and it felt super hacky.

I thought we would be simply raising an issue on a repo somewhere not emailing people no?

@Sergio0694
Copy link
Member Author

Ah yeah absolutely, wasn't suggesting that as a solution, just as a workaround to maybe suggest to users that absolutely need their app using ImageSharp to also work on ARM. In my case for instance, I just dropped that target and only build x86, x64 and ARM64.

I thought we would be simply raising an issue on a repo somewhere not emailing people no?

Yeah no, been there and spoke with multiple engineers in multiple (closed) issues, the only official way to get support for .NET Native and specifically to report bugs is to make a repro and then just send them an email at that support address 😄

@JimBobSquarePants
Copy link
Member

I dunno about that now. I would raise the issue in the runtime repo and see what happens.

https://github.com/dotnet/runtime/issues?q=uwp+label%3Aarea-UWP

@Sergio0694
Copy link
Member Author

Sergio0694 commented Oct 13, 2020

I mean, you're absolutely free to also open an issue there, but from experience I've had working through a number of .NET Native issues over the years I would tell you that's probably not where you will get support. Take a look at this issue which is the one I opened for a .NET Native bug I stumbled upon last month. You can see the conversation with Michal I had there, which then redirected me towards the email address I mentioned before, and that's where we spoke with him and other .NET Native engineers to actually get support or workarounds for that particular issue.

In particular, quoting directly from Michal:

Email and developer community are the only channels that work.

If you do want to log an issue somewhere that is also public, you can do so here.

And I mean, I can understand why that's the case here, with .NET Native itself not being open source and being a pretty different thing compared to just CoreCLR in general, and handled by different teams as well 🤔

@JimBobSquarePants
Copy link
Member

Well that sucks big time; they need a policy change.

Please raise a duplicate of any emails on the public channel then and cc me on the email. Thanks mate, appreciate it! 👍

@Sergio0694
Copy link
Member Author

Yeah the current support policy is not ideal, especially because it can be somewhat confusing/disorienting to either less experienced UWP devs having issues with UWP for the first time, or for devs that simply are not familiar with UWP. Also of course, not having a public, easily accessible issue tracking issue like GitHub means it's not possible to look back on past issues either 😕

Please raise a duplicate of any emails on the public channel then and cc me on the email. Thanks mate, appreciate it! 👍

Of course, happy to help! I still need you to DM me your email address though if you want me to cc. you though 🤣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:aot help needed upstream-issue Issue depends on upstream dependency fix.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants