Cannot evaluate expression because the current thread is in a stack overflow state
===

As I'm learning ... I have created a simple data binding project which works fine with on piece of data e.g. firstName. However, when I'm trying to use lastName compilers throws a runtime error as 

** Cannot evaluate expression because the current thread is in a stack overflow state.**

this is the code. As you see 2nd field (last name) is commented out since it is causing stack overflow.  any comment is appreciated.



       
    
    public partial class MainWindow : Window
    {
        Person p;
    
        public MainWindow()
        {
            InitializeComponent();
    
            p = new Person();
            p.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(p_PropertyChanged);
    
            this.DataContext = p;
    
            p.FirstName = p.OriginalFirstName;
            p.LastName = p.OriginalLastName;
        }
    
        void p_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            stat1.Text = (p.OriginalFirstName == p.FirstName) ? "Original" : "Modified";
            //stat2.Text = (p.OriginalLastName == p.LastName) ? "Original" : "Modifined";
        }
    
    }