------- Comment #3 from laurent at guerby dot net 2005-12-04 21:11 ------- The problem is that you are using "Unbounded_String" in your record, and this brings in lots of dope information for Finalization purposes. You can see it with:
gcc -c -gnatR3 uninitialized_field.adb ... for Unified_Encoding_Record'Object_Size use 384; for Unified_Encoding_Record'Value_Size use (if (#1 != 1) then (if (#2 == 2) then 384 else 208 end) else 200 end) ; for Unified_Encoding_Record'Alignment use 4; for Unified_Encoding_Record use record _Controller at 4 range 0 .. 159; Known at 0 range 0 .. 7; Os at 1 range 0 .. 7; Which at 24 range 0 .. 7; Name at 24 range 0 .. 191; Number at 24 range 0 .. 15; end record; ... If you replace Unbounded_String with Character (or any other non controlled like a subtype String5 is string (1..5)) your program does work without problem (4.2.0 20051202). I assume you used 'address and stuff in your test case but not in your original program. Could you provide a test case without 'address that has a suspicious behaviour (even if not all the times)? Laurent -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25245