Path: utzoo!attcan!uunet!mcsun!unido!alfrat!alfrat.uucp!dave From: dave@alfrat.uucp (Dave Cullen) Newsgroups: comp.lang.eiffel Subject: Garbage Collection Problem Message-ID: <124@alfrat.uucp> Date: 26 Sep 90 18:50:47 GMT Sender: dave@alfrat.uucp Reply-To: dave@alfrat.uucp (Dave Cullen) Organization: A+F System-Entwicklung, W-Germany Lines: 43 I have been having problems with Segmentation errors being created when turning on the automatic garbage collection in Eiffel 2.2, using the option in the SDF. I used garbage collection in Eiffel 2.1 without any problems, but since the occurence of the bug seems to be program size dependent this may have been luck. So far I have traced the segmentation error to the function "set_black" in "_gac.c". It occurs on the second of the following two lines: _rt_3A7 = c_field ((int32)i, _rt_3Ao); if (!EXPANDED(_rt_3A7)) { ... The object pointed at by "_rt_3Ao" is a STRING and in memory looks as follows: 0xc0000002 0x41f49c 0xc1000035 0x41f220 After the call to "c_field", "_rt_3A7" is set to 0xc1000035. Whilst this should theoretically be an object pointer to the area of memory used for the actual string, it looks rather more like the "info" part of an object. In my system this looks like the start of a LINKED_LIST object. Questions: (1) - Has anyone seen anything like this happen before? (2) - Is it possible that the garbage collector allowed the reuse of some memory that wasn't completely dead, i.e. overwriting part of my STRING object. This problem is quite urgent so if you've already solved it or have any ideas about how to isolate it, I'd be most grateful. Thanks, Dave Cullen | Tel. 02102-850514 A&F System Entwicklung | Email: dave@alfrat.uucp 4030 Ratingen | Maybe: ...!unido!alfrat.uucp!dave W. Germany | Meine Beutelmaus hat verstopfung!