Xamarin.forms: xamarin forms app crashes when entry binded to numeric emptied with the keyboard

Created on 28 May 2019  路  1Comment  路  Source: xamarin/Xamarin.Forms

VSF_TYPE_MARKDOWNi assume that this bug appears with 16.0.4. update because i have project uploaded to google play on 5 of may and it works as expected, but if i rebuild it with 16.1.0 or 16.1.1 it crashes
the second project was uploaded to google play on 25 of may and crashes, but never crashed before.
i rebuild both projects with VS 2017 (15.9.11) from the same codebase and they works as expected.

i created new project in VS 2019 (xamarin forms ) and it crashes. (testing on samsung s7 edge android 8.0 , but main project crashes on different devices ) . not crashing on 8.0 emulator. crash happens deep inside and not handled by VS debugger

how to repeat

  1. create new xamarin.forms project
  2. substitute mainpage.xaml with code below
  3. create subfolder viewmodels (in shared project)
  4. add file mainvm.cs with code below
  5. build and run on real device.
  6. try to remove text from entry field with backspace
  7. my device crashing when last digit removed (e.g. field becomes empty)

mainpage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             x:Class="xformstest.MainPage"
             xmlns:viewmodels ="clr-namespace:xformstest.viewmodels"
             >
    <ContentPage.BindingContext>
        <viewmodels:MainVM />
    </ContentPage.BindingContext>
    <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <!-- Place new controls here -->
        <Label Text="Welcome to Xamarin.Forms!" 
           HorizontalOptions="Center"
           VerticalOptions="CenterAndExpand" />
        <Entry Keyboard="Numeric" Text="{Binding iTest}" />
    </StackLayout>
</ContentPage>

viewmodel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;

namespace xformstest.viewmodels
{
    public class MainVM : INotifyPropertyChanged
    {

        #region inotify
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
        #endregion
        private int _itest = 25;
        public int iTest
        {
            get => _itest;
            set
            {
                _itest = value;
                OnPropertyChanged();
            }
        }

    }
}

debug output

Native Crash Reporting

Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries

used by your application.

=================================================================

Basic Fault Adddress Reporting

Memory around native instruction pointer (0x70c1643678):0x70c1643668 00 1c 40 b9 c0 03 5f d6 fd 7b bf a9 fd 03 00 91 ..@..._..{......
0x70c1643678 08 20 40 b9 a8 00 c8 37 88 01 e0 37 00 00 40 f9 . @....7...7..@.
0x70c1643688 fd 7b c1 a8 c0 03 5f d6 60 08 00 b0 01 0a 00 f0 .{...._.`...
....
0x70c1643698 03 0a 00 f0 00 24 06 91 21 80 08 91 63 8c 0a 91 .....$..!...c...

No native Android stacktrace (see debuggerd output).

=================================================================

Managed Stacktrace:

=================================================================
05-27 22:27:50.649 E/mono-rt ( 9346): /proc/self/maps:
05-27 22:27:50.649 E/mono-rt ( 9346): 12c00000-52c00000 rw-p 00000000 00:01 30453 /dev/ashmem/dalvik-main space (region space)_4853_4853 (deleted)
05-27 22:27:50.649 E/mono-rt ( 9346): 6f15e000-6f3f6000 rw-p 00000000 fd:01 457083 /data/dalvik-cache/arm64/system@*@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f3f6000-6f4fc000 rw-p 00000000 fd:01 457085 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f4fc000-6f531000 rw-p 00000000 fd:01 457086 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f531000-6f56e000 rw-p 00000000 fd:01 457088 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f56e000-6f572000 rw-p 00000000 fd:01 457090 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f572000-6f5b5000 rw-p 00000000 fd:01 457093 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f5b5000-6f5f0000 rw-p 00000000 fd:01 457094 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6f5f0000-6ff17000 rw-p 00000000 fd:01 457096 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6ff17000-6ffcc000 rw-p 00000000 fd:01 457098 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6ffcc000-6ffd5000 rw-p 00000000 fd:01 457100 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6ffd5000-6ffdd000 rw-p 00000000 fd:01 457102 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 6ffdd000-70001000 rw-p 00000000 fd:01 457104 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 70001000-7002d000 rw-p 00000000 fd:01 457107 /data/dalvik-cache/arm64/system@
@yyyche.http.legacy.boot.art
05-27 22:27:50.649 E/mono-rt ( 9346): 7002d000-70032000 rw-p 00000000 fd:01 457109 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.649 E/mono-rt ( 9346): 70032000-70039000 rw-p 00000000 fd:01 457110 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70039000-7003a000 rw-p 00000000 fd:01 457112 /data/dalvik-cache/arm64/system@
@yyyl.base-V1.0-java.art
05-27 22:27:50.650 E/mono-rt ( 9346): 7003a000-7003d000 rw-p 00000000 fd:01 457114 /data/dalvik-cache/arm64/system@
@yyyl.manager-V1.0-java.art
05-27 22:27:50.650 E/mono-rt ( 9346): 7003d000-70047000 rw-p 00000000 fd:01 457116 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70047000-70050000 rw-p 00000000 fd:01 457118 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70050000-70051000 rw-p 00000000 fd:01 457121 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70051000-70055000 rw-p 00000000 fd:01 457123 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70055000-70056000 rw-p 00000000 fd:01 457124 /data/dalvik-cache/arm64/system@
@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70056000-70090000 rw-p 00000000 fd:01 457127 /data/dalvik-cache/arm64/system@
*@yyy
05-27 22:27:50.650 E/mono-rt ( 9346): 70090000-700bd000 rw-p 00000000 fd:01 457128 /data/dalvik-cache/arm64/system@framework@boot-sec_edm.art
05-27 22:27:50.654 F/libc ( 9346): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x20 in tid 9346 (name.xformstest)

_This issue has been moved from https://developercommunity.visualstudio.com/content/problem/584819/xamarin-forms-app-crashes-when-entry-binded-to-num.html
VSTS ticketId: 900292_
_These are the original issue comments:_

Ilya Shulman on 5/27/2019, 00:47 PM (23 hours ago): c#, not c++
Visual Studio Feedback System on 5/27/2019, 09:18 PM (14 hours ago):

We have directed your feedback to the appropriate engineering team for further evaluation. The team will review the feedback and notify you about the next steps.

_These are the original issue solutions:_
(no solutions)

feedback-ticket high Android unverified bug

Most helpful comment

Thanks for the report and the test case! I can confirm that this behavior has the same native backtrace as https://github.com/xamarin/xamarin-android/issues/3112, so I will close this Xamarin.Forms issue as a duplicate of that issue. The fix will require a new version of Xamarin.Android that will be based on a new version of the Mono runtime and debugger. (The Xamarin.Forms NuGet package version will not affect this behavior.)

For reference, here's the top of the native backtrace with symbols that I got from this Xamarin.Forms OnPropertyChanged() test case:

  * frame #0: 0x0000007126cf5da8 libart.so`art_sigsegv_fault
    frame #1: 0x0000007126cf62b4 libart.so`art::FaultManager::HandleFault(int, siginfo*, void*) + 356
    frame #2: 0x00000058b5382b5c app_process64`___lldb_unnamed_symbol20$$app_process64 + 572
    frame #3: 0x00000071acbdd870 [vdso]
    frame #4: 0x00000071100c9640 libmonosgen-2.0.d.so`mono_handle_exception_internal [inlined] jinfo_get_method(ji=0x0000000000000000) at mini-runtime.h:390
    frame #5: 0x00000071100c9638 libmonosgen-2.0.d.so`mono_handle_exception_internal(ctx=<unavailable>, obj=<unavailable>, resume=0, out_ji=<unavailable>) at mini-exceptions.c:2701
    frame #6: 0x00000071100c9640 libmonosgen-2.0.d.so`mono_handle_exception_internal [inlined] jinfo_get_method(ji=0x000000710a888fa8) at mini-runtime.h:390
    frame #7: 0x00000071100c9638 libmonosgen-2.0.d.so`mono_handle_exception_internal(ctx=<unavailable>, obj=<unavailable>, resume=0, out_ji=<unavailable>) at mini-exceptions.c:2701
    frame #8: 0x00000071100c92b8 libmonosgen-2.0.d.so`mono_handle_exception(ctx=<unavailable>, obj=<unavailable>) at mini-exceptions.c:2988
    frame #9: 0x000000711010101c libmonosgen-2.0.d.so`mono_arm_throw_exception(arg=<unavailable>, pc=<unavailable>, int_regs=0x0000007fcd278540, fp_regs=0x0000007fcd278640, corlib=<unavailable>, rethrow=0) at exceptions-arm64.c:410

(Duplicate of https://github.com/xamarin/xamarin-android/issues/3112 )

>All comments

Thanks for the report and the test case! I can confirm that this behavior has the same native backtrace as https://github.com/xamarin/xamarin-android/issues/3112, so I will close this Xamarin.Forms issue as a duplicate of that issue. The fix will require a new version of Xamarin.Android that will be based on a new version of the Mono runtime and debugger. (The Xamarin.Forms NuGet package version will not affect this behavior.)

For reference, here's the top of the native backtrace with symbols that I got from this Xamarin.Forms OnPropertyChanged() test case:

  * frame #0: 0x0000007126cf5da8 libart.so`art_sigsegv_fault
    frame #1: 0x0000007126cf62b4 libart.so`art::FaultManager::HandleFault(int, siginfo*, void*) + 356
    frame #2: 0x00000058b5382b5c app_process64`___lldb_unnamed_symbol20$$app_process64 + 572
    frame #3: 0x00000071acbdd870 [vdso]
    frame #4: 0x00000071100c9640 libmonosgen-2.0.d.so`mono_handle_exception_internal [inlined] jinfo_get_method(ji=0x0000000000000000) at mini-runtime.h:390
    frame #5: 0x00000071100c9638 libmonosgen-2.0.d.so`mono_handle_exception_internal(ctx=<unavailable>, obj=<unavailable>, resume=0, out_ji=<unavailable>) at mini-exceptions.c:2701
    frame #6: 0x00000071100c9640 libmonosgen-2.0.d.so`mono_handle_exception_internal [inlined] jinfo_get_method(ji=0x000000710a888fa8) at mini-runtime.h:390
    frame #7: 0x00000071100c9638 libmonosgen-2.0.d.so`mono_handle_exception_internal(ctx=<unavailable>, obj=<unavailable>, resume=0, out_ji=<unavailable>) at mini-exceptions.c:2701
    frame #8: 0x00000071100c92b8 libmonosgen-2.0.d.so`mono_handle_exception(ctx=<unavailable>, obj=<unavailable>) at mini-exceptions.c:2988
    frame #9: 0x000000711010101c libmonosgen-2.0.d.so`mono_arm_throw_exception(arg=<unavailable>, pc=<unavailable>, int_regs=0x0000007fcd278540, fp_regs=0x0000007fcd278640, corlib=<unavailable>, rethrow=0) at exceptions-arm64.c:410

(Duplicate of https://github.com/xamarin/xamarin-android/issues/3112 )

Was this page helpful?
0 / 5 - 0 ratings

Related issues

EmilAlipiev picture EmilAlipiev  路  3Comments

MartinWegner picture MartinWegner  路  3Comments

rmarinho picture rmarinho  路  3Comments

suihanhbr picture suihanhbr  路  3Comments

deakjahn picture deakjahn  路  3Comments