Skip to content

Conversation

@am11
Copy link
Member

@am11 am11 commented Mar 13, 2022

@am11
Copy link
Member Author

am11 commented Mar 13, 2022

AOT failure is unrelated, opened #66556.

@am11
Copy link
Member Author

am11 commented Mar 13, 2022

@AaronRobinsonMSFT, thanks for your feedback.

The general concern is that changing type on left side or function prototypes entails updating all function calls then callers of those functions. Also, sometimes it may not be possible to make such a change (without more code); e.g. on Windows, read() returns int but on Unix, it returns ssize_t.

@am11 am11 force-pushed the fix/sdl-warnings branch from 23367f6 to 5db609c Compare March 14, 2022 05:20
@am11
Copy link
Member Author

am11 commented Mar 14, 2022

@AaronRobinsonMSFT, @lambdageek, the last update is following this pattern:
Before

int len = (int)strlen (foo);
emit_int32(&buf, foo);

After

size_t len = strlen (foo);
emit_int32(&buf, (int)foo);

i.e. typecast on the line where it is needed.

@am11 am11 force-pushed the fix/sdl-warnings branch from 4767997 to ba71dfa Compare March 14, 2022 09:20
@am11
Copy link
Member Author

am11 commented Mar 14, 2022

I think I have addressed the feedback and then some. The existing code is full of inconsistencies, so the feedback is bit subjective. I suggest to leave it to this state (unless, of course, there is a technical issue).

@lateralusX
Copy link
Member

lateralusX commented Mar 14, 2022

One thing that came to mind when looking through the changes, since we are mitigating valid warnings using down cast and change of singed/unsigned types, maybe an option could be to cast through a macro or similar and then we could at least make some validation on debug builds that the cast is valid from type x to y? Just a thought since we are going over this.

@lateralusX
Copy link
Member

I think I have addressed the feedback and then some. The existing code is full of inconsistencies, so the feedback is bit subjective. I suggest to leave it to this state (unless, of course, there is a technical issue).

Jupp, understood, I just wrote down the differences that I spotted when looking through changes. If we do an explicit cast I think we should cast to the expected type as much as possible.

@am11 am11 force-pushed the fix/sdl-warnings branch from 08bb9f6 to 1d4c578 Compare March 14, 2022 11:28
#pragma warning(disable:4090) // const problem
#pragma warning(disable:4146) // unary minus operator applied to unsigned type, result still unsigned
#pragma warning(disable:4244) // integer conversion, possible loss of data
#pragma warning(disable:4267) // integer conversion, possible loss of data
Copy link
Member

Choose a reason for hiding this comment

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

I wonder how painful it would be to enable -Wshorten-64-to-32 on clang - it would help catch some of these errors when building on OSX. Not a lot of the mono team works with the Win32 builds

Copy link
Member Author

Choose a reason for hiding this comment

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

1674 hits on M1 (osx-arm64).. project for another weekend. 😅

Copy link
Member Author

Choose a reason for hiding this comment

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

On main branch 2002 hits.

Copy link
Member

@lambdageek lambdageek Mar 14, 2022

Choose a reason for hiding this comment

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

I guess -Wshorten-64-to-32 is more like C4244 at W3 (which we also need to fix). Looking at a sample compilation there's a couple hundredthousand warnings.

It looks like the root cause for a bunch of them is that mono_mempool_alloc and mono_mempool_alloc0 take an unsigned int size argument and all the macros that ultimately expand to that are passed size_t-shaped arguments in a lot of places.

Annoyingly mono_mempool_alloc is tagged MONO_API so there might be embedders calling it, so we can't just change its signature.

@lateralusX lateralusX self-requested a review March 14, 2022 14:39
Copy link
Member

@lateralusX lateralusX left a comment

Choose a reason for hiding this comment

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

LGTM, thanks for working through this!

@AaronRobinsonMSFT
Copy link
Member

Failure is #66556

@AaronRobinsonMSFT AaronRobinsonMSFT merged commit c3dbdea into dotnet:main Mar 15, 2022
radical added a commit to radical/runtime that referenced this pull request Mar 16, 2022
This reverts commit c3dbdea.

This caused `mono-aot-cross.exe` to crash on windows, breaking all the
windows/AOT tests.
Issue: dotnet#66718
lateralusX added a commit to lateralusX/runtime that referenced this pull request Mar 16, 2022
dotnet#66552 did incorrect switch
to size_t from int in a sections that expects variable to go negative.
@SamMonoRT
Copy link
Member

cc @am11 - if #66721 doesn't fix the #66718 then we'll be reverting the changes in this PR via #66719

akoeplinger pushed a commit that referenced this pull request Mar 16, 2022
#66552 did incorrect switch
to size_t from int in a sections that expects variable to go negative.
@akoeplinger
Copy link
Member

It did fix it so no need to revert :)

radekdoulik pushed a commit to radekdoulik/runtime that referenced this pull request Mar 30, 2022
* Remove 4267 suppression from mono

* Fix a mono warning on linux arm64

* Remove trailing whitespaces from changeset
radekdoulik pushed a commit to radekdoulik/runtime that referenced this pull request Mar 30, 2022
…66721)

dotnet#66552 did incorrect switch
to size_t from int in a sections that expects variable to go negative.
@ghost ghost locked as resolved and limited conversation to collaborators Apr 16, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-VM-meta-mono community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants