Program crash: GC destroys an object unexpectedly

eugene dee0xeed at gmail.com
Sun Sep 19 20:42:09 UTC 2021


On Sunday, 19 September 2021 at 16:27:55 UTC, jfondren wrote:
> This is also a sufficient patch to prevent the segfault:
>
> ```
> diff --git a/echo_client.d b/echo_client.d
> index 1f8270e..0b968a8 100644
> --- a/echo_client.d
> +++ b/echo_client.d
> @@ -39,4 +39,6 @@ void main(string[] args) {
>      auto md = new MessageDispatcher();
>      md.loop();
>      writeln(" === Goodbye, world! === ");
> +    writeln(stopper.sg0.number);
> +    //writeln(stopper.sg1.number);
>  }

This one really helps, program terminates as expected:

```
'MAIN @ IDLE' got 'T0' from 'OS'
'MAIN @ IDLE' got 'T0' from 'OS'
^Csi.sizeof = 128
'STOPPER @ IDLE' got 'S0' from 'OS'
0
  === Goodbye, world! ===
___!!!___edsm.StageMachine.~this(): MAIN destroyed...
ecap.EventQueue.~this
    !!! esrc.EventSource.~this() : esrc.Timer (owner MAIN, fd = 4) 
this @ 0x7f15e6c870c0
___!!!___edsm.StageMachine.~this(): STOPPER destroyed...
    !!! esrc.EventSource.~this() : esrc.Signal (owner STOPPER, fd 
= 5) this @ 0x7f15e6c8a150
    !!! esrc.EventSource.~this() : esrc.Signal (owner STOPPER, fd 
= 6) this @ 0x7f15e6c8a180
```


More information about the Digitalmars-d-learn mailing list