Short: Segmentation fault beim mehrfachen Erben von heart_beat's Date: Wed, 4 Oct 2000 03:19:37 +0200 From: gnomi@UNItopia.rus.uni-stuttgart.de (Gnomi) Type: Bug State: Done - fixed in 3.2.9-dev.236 See also: b-000616 Driver: 3.2.9-dev.234 Ich habe den Grund der letzten Crashs auf folgende 3 Dateien reduzieren koennen: (test.c ist die zu ladende Datei.) ---test.c--------- inherit "testi1"; inherit "testi2"; void create() { set_heart_beat(1); } ---testi1.c------- private void heart_beat() { } ---testi2.c------- void heart_beat() { } Der Grund liegt also am private des 1. heart_beats. (Wenn man beide inherits vertauscht, gibt's keinen Crash.) ----- Analysis: In the compiled object, the private heart_beat() was cross-defined to the non-private one, and the 'heart_beat' index in the program structure pointed at the cross-definition. setup_new_frame1() didn't expect this and tried to resolve the cross-definition offset as inheritance offset -> boom. The same could happen when the compiler encountered heart_beat() prototypes. Note that for other functions this is not a problem as their function index is looked up by name, which wouldn't find the private inherit.