Strange behavior associated with a segmentation fault
Closed this issue · 1 comments
I am struggling with strange behavior related to a segmentation fault while trying to implement a derived class to hold data in an Array. Could I get some advice? I've extracted the minimal code that reproduces the error, and below I present code snippets that cause the segmentation fault and those that do not.
The following code results in a segmentation fault
class Base:
InBuffer : Array[UInt[64]]
OutBufferA : Array[UInt[64]]
OutBufferB : Array[UInt[64]]
def __init__(self,BufferSize:int):
self.OutBufferA = Array[UInt[64]](BufferSize)
self.OutBufferB = Array[UInt[64]](BufferSize)
self.InBuffer = Array[UInt[64]](10)
def Exe(self,Id:int):
pass
class TestMod(Base):
def __init__(self,BufferSize:int):
super().__init__(BufferSize)
def Exe(self,Id:int):
print(Id)
if __name__ == "__main__":
In : Array[UInt[64]]
line : str
In = Array[UInt[64]](2 ** 17)
TestM : TestMod
TestM = TestMod(2 ** 17)
TestM.InBuffer = In
TestM.Exe(1)
with open("TestDt.txt","r") as fin:
for line in fin:
pass
TestM.Exe(2)
result:
run: line 19: 1594182 Segmentation fault
Commenting out
#TestM.InBuffer = In
or
Commenting out read file code
#with open("TestDt.txt","r") as fin:
# for line in fin:
# pass
resolves the segmentation fault.
result:
1
2
* Terminal will be reused by tasks, press any key to close it.
"TestDt.txt" is below.
8,
+0.000000000 ,+0.000000000 ,+0.000000000 ,+0.000000000 ,+0.000000000 ,+0.000000000 ,+0.000000000 ,+0.000000000 ,
Thanks for the report, @iSunfield -- this looks like an issue with inheritance. We'll take a look and follow up ASAP. If you use static inheritance via class TestMod(Static[Base])
it seems to work.