Thanks to visit codestin.com
Credit goes to github.com

Skip to content

mcs appears to be picking incorrect overload for decimal division #9772

@NattyNarwhal

Description

@NattyNarwhal

Steps to Reproduce

  1. Compile BCL

Current Behavior

See mono/corefx#108 and #9684 (comment) - mcs seems to pick the incorrect overload, picking an overload that causes a decimal divided by a long to overflow on a ToInt32.

Expected Behavior

BCL compiles fine. A workaround has been installed by mono/corefx#108, so it needs to be reverted locally to test.

On which platforms did you notice this

[ ] macOS
[ ] Linux
[ ] Windows
[X} AIX

Version Used:

Mono JIT compiler version 5.17.0 (master/0a5e437 Thu Jul 26 14:32:57  2018)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:
        SIGSEGV:       normal
        Notification:  Thread + polling
        Architecture:  ppc
        Disabled:      none
        Misc:          softdebug
        Interpreter:   yes
        Suspend:       preemptive
        GC:            sgen

Stacktrace

Note that a recent refactor moved the problem class to System.

make[7]: Entering directory '/home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/mcs/class/System.Security'
MONO_PATH="./../../class/lib/monolite-unix/1051700026:./../../class/lib/monolite-unix/1051700026/Facades:$MONO_PATH" /home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/runtime/mono-wrapper --debug ./../../build/gensources.exe --strict "../../build/deps/_basic__System.Security.dll.sources" "System.Security.dll" "" "basic"
make all-local
make[8]: Entering directory '/home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/mcs/class/System.Security'
cat <./../../build/deps/_basic__System.Security.dll.sources >../../build/deps/_basic__System.Security.dll.response
MONO_PATH="./../../class/lib/monolite-unix/1051700026:./../../class/lib/monolite-unix/1051700026/Facades:$MONO_PATH" /home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/runtime/mono-wrapper  ./../../class/lib/monolite-unix/1051700026/mcs.exe /codepage:65001 /nologo /noconfig /deterministic   -d:NET_4_0 -d:NET_4_5 -d:MONO -d:WIN_PLATFORM -d:BOOTSTRAP_BASIC -nowarn:1699 -nostdlib -optimize /features:peverify-compat /langversion:latest  -unsafe -nowarn:414,618 -d:SECURITY_DEP -r:./../../../external/binary-reference-assemblies/v4.7.1/System.Numerics.dll -r:./../../../external/binary-reference-assemblies/v4.7.1/System.Core.dll -r:./../../class/lib/basic/Mono.Security.dll -r:./../../class/lib/basic/System.dll -r:./../../class/lib/basic/System.Xml.dll -r:./../../class/lib/basic/mscorlib.dll  /keyfile:../msfinal.pub  -target:library -out:../../class/lib/basic/System.Security.dll  @./../../build/deps/_basic__System.Security.dll.response
../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnReader.cs(294,21): warning CS0219: The variable `tag' is assigned but its value is never used
../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnReader.cs(317,21): warning CS0219: The variable `tag' is assigned but its value is never used

Unhandled Exception:
Mono.CSharp.InternalErrorException: ../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnWriter.cs(1171,22): System.Security.Cryptography.Asn1.AsnWriter.WriteGeneralizedTimeCore(System.Security.Cryptography.Asn1.Asn1Tag, System.DateTimeOffset, bool) ---> Mono.CSharp.InternalErrorException: ../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnWriter.cs(1172,9): ---> System.OverflowException: Value was either too large or too small for an Int32.
  at System.Decimal.ToInt32 (System.Decimal d) [0x00035] in <f753a15472ea46d3a1cdfc28ed2b0394>:0 
  at System.Decimal.op_Explicit (System.Decimal value) [0x00000] in <f753a15472ea46d3a1cdfc28ed2b0394>:0 
  at Mono.CSharp.DecimalConstant.Emit (Mono.CSharp.EmitContext ec) [0x0006d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Argument.Emit (Mono.CSharp.EmitContext ec) [0x0002d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Arguments.Emit (Mono.CSharp.EmitContext ec, System.Boolean dup_args, System.Boolean prepareAwait) [0x0004c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.CallEmitter.EmitPredefined (Mono.CSharp.EmitContext ec, Mono.CSharp.MethodSpec method, Mono.CSharp.Arguments Arguments, System.Boolean statement, System.Nullable`1[T] loc) [0x0012f] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.CallEmitter.Emit (Mono.CSharp.EmitContext ec, Mono.CSharp.MethodSpec method, Mono.CSharp.Arguments Arguments, Mono.CSharp.Location loc) [0x0000c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.UserOperatorCall.Emit (Mono.CSharp.EmitContext ec) [0x00008] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.VariableReference.EmitAssign (Mono.CSharp.EmitContext ec, Mono.CSharp.Expression source, System.Boolean leave_copy, System.Boolean prepare_for_load) [0x00070] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Assign.Emit (Mono.CSharp.EmitContext ec, System.Boolean is_statement) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Assign.EmitStatement (Mono.CSharp.EmitContext ec) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.StatementExpression.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.If.DoEmit (Mono.CSharp.EmitContext ec) [0x00055] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.If.DoEmit (Mono.CSharp.EmitContext ec) [0x00055] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ParametersBlock.Emit (Mono.CSharp.EmitContext ec) [0x00030] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x00038] in <c3cc7360f1974efe94a8df2db7373648>:0 
   --- End of inner exception stack trace ---
  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x000bb] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.TypeDefinition parent) [0x0008c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.MethodOrOperator.Emit () [0x001e6] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Method.Emit () [0x00104] in <c3cc7360f1974efe94a8df2db7373648>:0 
   --- End of inner exception stack trace ---
  at Mono.CSharp.Method.Emit () [0x00114] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeDefinition.Emit () [0x0027b] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ClassOrStruct.Emit () [0x0001d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Class.Emit () [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeDefinition.EmitContainer () [0x0000c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00007] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00007] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ModuleContainer.EmitContainer () [0x00085] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.AssemblyDefinition.Emit () [0x0008c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.AssemblyDefinitionStatic.Emit () [0x0010e] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Driver.Compile () [0x002a8] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x0004c] in <c3cc7360f1974efe94a8df2db7373648>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: Mono.CSharp.InternalErrorException: ../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnWriter.cs(1171,22): System.Security.Cryptography.Asn1.AsnWriter.WriteGeneralizedTimeCore(System.Security.Cryptography.Asn1.Asn1Tag, System.DateTimeOffset, bool) ---> Mono.CSharp.InternalErrorException: ../../../external/corefx/src/Common/src/System/Security/Cryptography/AsnWriter.cs(1172,9): ---> System.OverflowException: Value was either too large or too small for an Int32.
  at System.Decimal.ToInt32 (System.Decimal d) [0x00035] in <f753a15472ea46d3a1cdfc28ed2b0394>:0 
  at System.Decimal.op_Explicit (System.Decimal value) [0x00000] in <f753a15472ea46d3a1cdfc28ed2b0394>:0 
  at Mono.CSharp.DecimalConstant.Emit (Mono.CSharp.EmitContext ec) [0x0006d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Argument.Emit (Mono.CSharp.EmitContext ec) [0x0002d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Arguments.Emit (Mono.CSharp.EmitContext ec, System.Boolean dup_args, System.Boolean prepareAwait) [0x0004c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.CallEmitter.EmitPredefined (Mono.CSharp.EmitContext ec, Mono.CSharp.MethodSpec method, Mono.CSharp.Arguments Arguments, System.Boolean statement, System.Nullable`1[T] loc) [0x0012f] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.CallEmitter.Emit (Mono.CSharp.EmitContext ec, Mono.CSharp.MethodSpec method, Mono.CSharp.Arguments Arguments, Mono.CSharp.Location loc) [0x0000c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.UserOperatorCall.Emit (Mono.CSharp.EmitContext ec) [0x00008] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.VariableReference.EmitAssign (Mono.CSharp.EmitContext ec, Mono.CSharp.Expression source, System.Boolean leave_copy, System.Boolean prepare_for_load) [0x00070] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Assign.Emit (Mono.CSharp.EmitContext ec, System.Boolean is_statement) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Assign.EmitStatement (Mono.CSharp.EmitContext ec) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.StatementExpression.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.If.DoEmit (Mono.CSharp.EmitContext ec) [0x00055] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.If.DoEmit (Mono.CSharp.EmitContext ec) [0x00055] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x0000d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00010] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00042] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ParametersBlock.Emit (Mono.CSharp.EmitContext ec) [0x00030] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x00038] in <c3cc7360f1974efe94a8df2db7373648>:0 
   --- End of inner exception stack trace ---
  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x000bb] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.TypeDefinition parent) [0x0008c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.MethodOrOperator.Emit () [0x001e6] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Method.Emit () [0x00104] in <c3cc7360f1974efe94a8df2db7373648>:0 
   --- End of inner exception stack trace ---
  at Mono.CSharp.Method.Emit () [0x00114] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeDefinition.Emit () [0x0027b] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ClassOrStruct.Emit () [0x0001d] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Class.Emit () [0x00000] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeDefinition.EmitContainer () [0x0000c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00007] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.NamespaceContainer.EmitContainer () [0x00007] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.TypeContainer.EmitContainer () [0x00018] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.ModuleContainer.EmitContainer () [0x00085] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.AssemblyDefinition.Emit () [0x0008c] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.AssemblyDefinitionStatic.Emit () [0x0010e] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Driver.Compile () [0x002a8] in <c3cc7360f1974efe94a8df2db7373648>:0 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x0004c] in <c3cc7360f1974efe94a8df2db7373648>:0 
../../build/library.make:352: recipe for target '../../class/lib/basic/System.Security.dll' failed
make[8]: *** [../../class/lib/basic/System.Security.dll] Error 1
make[8]: Leaving directory '/home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/mcs/class/System.Security'
../../build/rules.make:211: recipe for target 'do-all' failed
make[7]: *** [do-all] Error 2
make[7]: Leaving directory '/home/jenkins/workspace/test-mono-mainline-community/label/aix-ppc64/mcs/class/System.Security'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions