[Mono-dev] Mono runtime segfault

Marek Safar marek.safar at seznam.cz
Tue Aug 23 03:51:27 EDT 2005


Hello,

>>On 8/23/05, David Carr <dc at dcarr.org> wrote:
>>    
>>
>>>I'm getting an unexpected segfault running the code below:  Forgive me
>>>if its a silly mistake on my part.
>>>
>>>Thanks for any help,
>>>David Carr
>>>
>>>david at Cadmium ~/Prog/c#/gcross $ mono Crash.exe
>>>Segmentation fault 
>>>
>>>Listing for Crash.cs:
>>>public class Crash
>>>{
>>>    int var
>>>    {
>>>    get { return var; }
>>>    set { var = value; }
>>>    }
>>>
>>>    public Crash(int i)
>>>    {
>>>    var = i;
>>>    }
>>>
>>>    public static void Main() 
>>>    {
>>>    Crash c = new Crash(10);
>>>    }
>>>
>>>}
>>>
>>>      
>>>
>2005/8/23, feelite qiu <autolysis at gmail.com>:
>  
>
>>hi David
>> 
>> the code snippet 
>> 
>>    int var
>>    {
>>    get { return var; }
>>    set { var = value; }
>>    }
>> 
>> 
>> creates an infinite loop as properties are internally implemented as
>>methods. So when you instantiate the object, 
>> 
>>  Crash c = new Crash(10);
>> 
>> This chain of action is what I understand 
>> 
>> new Crash(10) -> var = 10; -> set { var = 10; } ->  get { return var; } -> 
>>get { return var; } ->...
>> 
>> the error lies in the fact that your property var does not refer to an
>>underlying field. You can try
>> 
>> int Var;
>>  int var
>>    {
>>    get { return Var; }
>>    set { Var = value; }
>>    }
>> 
>> 
>> regards
>> feelite
>>
>> 
>>    
>>
>
>Interesting. Could be implemented a new option in the mono compiler to
>show a warning message in this situation? Perhaps it is interesting
>just to file a new Request For Enhancement in bugzilla, isn't it?
>  
>
You can, but the mono runtime should throw StackOverflowException in 
this case which is a bug. <frlrfsystemstackoverflowexceptionclasstopic.htm>

Marek





More information about the Mono-devel-list mailing list