Why does a switch break cause a segmentation fault

Exil Exil at gmall.com
Tue Jul 23 00:01:09 UTC 2019


On Monday, 22 July 2019 at 22:05:17 UTC, adamgoldberg wrote:
> Hey, I just happened to be writing a program in D an stumbled 
> upon a bug, that causes it to terminate after receiving a SEGV 
> signal, nothing wierd so far but it looks everything I tried 
> shows it is the break statement inside of a switch.
> It seems to have a relatively random chance of occuring, and 
> also somewhat dependant on the compiler, and build mode used.
> I'm short on time so instead of rewriting my SO post I will 
> just link it.
>
> Here! 
> https://stackoverflow.com/questions/57153617/random-segmentation-fault-in-d-lang-on-switch-break
>
> Hope someone can help!

Could be the statement in the actual switch(), which is accessing 
a pointer "codecpar".

     switch (stream.codecpar.codec_type)
                     ^^^^^

This could be null and you aren't checking for it. I find that D 
sometimes doesn't have the correct line numbers for debug info, 
even when not doing an optimized build. So it could really be 
anything in that function.

The root cause could be a lot of things though, some bad codegen 
or otherwise. Could add a check to make sure though.






More information about the Digitalmars-d-learn mailing list