{ %NORUN } program tw30830a; {$mode delphi} type TBase = class procedure Test1(const a: T); end; TDerived = class(TBase) procedure Test2(const a: T); end; procedure TBase.Test1(const a: T); begin end; procedure TDerived.Test2(const a: T); begin end; procedure Test(aIntf: TBase); overload; // works begin end; procedure Test(aIntf: TDerived); overload; // SIGSEGV :( begin end; var b: TBase; d: TDerived; begin Test(b); Test(d); end.