August 13, 2019
On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
> FYI DustMite has been created _exactly_ for this purpose. It's even bundled with the official DMD releases.
>
> https://github.com/CyberShadow/DustMite/wiki
>
>
> 1) Copy all project sources in fresh directory
> 2) Run dustmite with a tester to check whether the bug can still be observed.
> Here:
>
> ---
> dustmite fresh-dir 'dmd -O (your normal invocation) 2>&1 | grep -qF "tym = 14"'
> ---

I should do a proper blogpost on the Dustmite methodology I use at some point. Maybe a ten minute dconf talk next year. But basically, you make a source folder, call it, say, fresh-dir-1. Make a repro script, repro-1.sh. Run dustmite to completion. This creates fresh-dir-1.reduced. Then this folder is *immediately* copied to "fresh-dir-2", the script to repro-2.sh, and the process is repeated from start.

The reason for this is usually Dustmite doesn't quite manage to finish the reduction on its own and needs some help to get nontrivial reductions like inlining template parameters. Or sometimes you want to reduce the main program first, and only then add in external libraries or Phobos modules. But it's easy, and has happened to me lots of times, to accidentally destroy the reduction that way, especially if it spans multiple files. By copying the reduced folder, we ensure we are working in a clean folder and never have to waste time rerunning the previous reduction.
August 13, 2019
On Tuesday, 13 August 2019 at 05:50:23 UTC, FeepingCreature wrote:

>
> I should do a proper blogpost on the Dustmite methodology I use at some point.

A blog post for the D Blog is always welcome :-) You'd get a bounty for it, too.
August 13, 2019
On Tuesday, 13 August 2019 at 05:50:23 UTC, FeepingCreature wrote:
> On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
>> [...]
>
> I should do a proper blogpost on the Dustmite methodology I use at some point. Maybe a ten minute dconf talk next year. But basically, you make a source folder, call it, say, fresh-dir-1. Make a repro script, repro-1.sh. Run dustmite to completion. This creates fresh-dir-1.reduced. Then this folder is *immediately* copied to "fresh-dir-2", the script to repro-2.sh, and the process is repeated from start.
>
> [...]

... Or a PR to Dustmite to have this as a built-in feature.
August 13, 2019
On Tuesday, 13 August 2019 at 05:50:23 UTC, FeepingCreature wrote:
> I should do a proper blogpost on the Dustmite methodology I use at some point. Maybe a ten minute dconf talk next year. But basically, you make a source folder, call it, say, fresh-dir-1. Make a repro script, repro-1.sh. Run dustmite to completion. This creates fresh-dir-1.reduced. Then this folder is *immediately* copied to "fresh-dir-2", the script to repro-2.sh, and the process is repeated from start.

Hey, that's exactly what I do! :)
August 13, 2019
On Tuesday, August 13, 2019 3:07:50 AM MDT Vladimir Panteleev via Digitalmars-d wrote:
> On Tuesday, 13 August 2019 at 05:50:23 UTC, FeepingCreature wrote:
> > I should do a proper blogpost on the Dustmite methodology I use at some point. Maybe a ten minute dconf talk next year. But basically, you make a source folder, call it, say, fresh-dir-1. Make a repro script, repro-1.sh. Run dustmite to completion. This creates fresh-dir-1.reduced. Then this folder is *immediately* copied to "fresh-dir-2", the script to repro-2.sh, and the process is repeated from start.
>
> Hey, that's exactly what I do! :)

Honestly, it's what I would have expected anyone using dustmite to do, though I can certainly believe that some folks don't do it at first.

- Jonathan M Davis



August 14, 2019
On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
>
> FYI DustMite has been created _exactly_ for this purpose. It's even bundled with the official DMD releases.
>
> https://github.com/CyberShadow/DustMite/wiki
>

Just a note to report that I get "Video unavailable" for the Youtube link close to the top of the DustMite wiki page.

https://www.youtube.com/watch?v=5iXRFlKvEY0

August 14, 2019
On Wednesday, 14 August 2019 at 02:53:17 UTC, Peter Jacobs wrote:
> On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
>>
>> FYI DustMite has been created _exactly_ for this purpose. It's even bundled with the official DMD releases.
>>
>> https://github.com/CyberShadow/DustMite/wiki
>>
>
> Just a note to report that I get "Video unavailable" for the Youtube link close to the top of the DustMite wiki page.
>
> https://www.youtube.com/watch?v=5iXRFlKvEY0

And the correct link is this: https://youtu.be/1viQK8w6370

By the way, why such useful talk has so few views? Maybe the wrong link contributed to that?

Or maybe is the fact that we need to learn how to spread information like this better, in fact I never used before because of lack of knowledge, and searching for Dustmite on youtube gives nothing on the matter.

Matheus.
August 14, 2019
On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
>
> FYI DustMite has been created _exactly_ for this purpose. It's even bundled with the official DMD releases.
>
> https://github.com/CyberShadow/DustMite/wiki
>
>
> 1) Copy all project sources in fresh directory
> 2) Run dustmite with a tester to check whether the bug can still be observed.
> Here:
>
> ---
> dustmite fresh-dir 'dmd -O (your normal invocation) 2>&1 | grep -qF "tym = 14"'
> ---

Using the suggestion of putting the command into a script, I gave dustmite a go but didn't get far.  The script itself seemed to have the correct behaviour when invoked from within the eilmer-clean directory.

peterj@helmholtz ~/dgd-play/src $ dustmite eilmer-clean ../dustmite-script.sh
Loading eilmer-clean/INSTALL
Loading eilmer-clean/README
Loading eilmer-clean/bc/boundary_cell_effect.d
Loading eilmer-clean/bc/boundary_condition.d
Loading eilmer-clean/bc/boundary_flux_effect.d
Loading eilmer-clean/bc/boundary_interface_effect.d
Loading eilmer-clean/bc/ghost_cell_effect/extrapolate_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/fixed_p.d
Loading eilmer-clean/bc/ghost_cell_effect/fixed_pt.d
Loading eilmer-clean/bc/ghost_cell_effect/flow_state_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/flow_state_copy_from_profile.d
Loading eilmer-clean/bc/ghost_cell_effect/from_stagnation.d
Loading eilmer-clean/bc/ghost_cell_effect/full_face_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/ghost_cell.d
Loading eilmer-clean/bc/ghost_cell_effect/internal_copy_then_reflect.d
Loading eilmer-clean/bc/ghost_cell_effect/mapped_cell_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/package.d
Loading eilmer-clean/bc/package.d
Loading eilmer-clean/bc/user_defined_effects.d
Loading eilmer-clean/conservedquantities.d
Loading eilmer-clean/cuda_gpu_chem.d
Loading eilmer-clean/fileutil.d
Loading eilmer-clean/flowgradients.d
Loading eilmer-clean/flowsolution.d
Loading eilmer-clean/flowstate.d
Loading eilmer-clean/fluidblock.d
Loading eilmer-clean/fluxcalc.d
Loading eilmer-clean/fvcell.d
Loading eilmer-clean/fvcore.d
Loading eilmer-clean/fvinterface.d
Loading eilmer-clean/fvvertex.d
Loading eilmer-clean/gas_solid_interface.d
Loading eilmer-clean/globalconfig.d
Loading eilmer-clean/globaldata.d
Loading eilmer-clean/grid_motion.d
Loading eilmer-clean/history.d
Loading eilmer-clean/json_helper.d
Loading eilmer-clean/limiters.d
Loading eilmer-clean/loadbalance.d
Loading eilmer-clean/loads.d
Loading eilmer-clean/lsqinterp.d
Loading eilmer-clean/lua_helper.d
Loading eilmer-clean/luaflowsolution.d
Loading eilmer-clean/luaflowstate.d
Loading eilmer-clean/luaglobalconfig.d
Loading eilmer-clean/main.d
Loading eilmer-clean/main_with_rev_string.d
Loading eilmer-clean/makefile
Loading eilmer-clean/mass_diffusion.d
Loading eilmer-clean/onedinterp.d
Loading eilmer-clean/opencl_gpu_chem.d
Loading eilmer-clean/optdriver.d
Loading eilmer-clean/postprocess.d
Loading eilmer-clean/sfluidblock.d
Loading eilmer-clean/shape_sensitivity_calc.d
Loading eilmer-clean/shape_sensitivity_core.d
Loading eilmer-clean/shock_fitting_moving_grid.d
Loading eilmer-clean/simcore.d
Loading eilmer-clean/solid/luasolidprops.d
Loading eilmer-clean/solid/solid_boundary_flux_effect.d
Loading eilmer-clean/solid/solid_boundary_interface_effect.d
Loading eilmer-clean/solid/solid_loose_coupling_update.d
Loading eilmer-clean/solid/solid_udf_source_terms.d
Loading eilmer-clean/solid/solidbc.d
Loading eilmer-clean/solid/solidblock.d
Loading eilmer-clean/solid/solidfvcell.d
Loading eilmer-clean/solid/solidfvinterface.d
Loading eilmer-clean/solid/solidfvvertex.d
Loading eilmer-clean/solid/solidprops.d
Loading eilmer-clean/solid/solidsolution.d
Loading eilmer-clean/solid/ssolidblock.d
Loading eilmer-clean/special_block_init.d
Loading eilmer-clean/steadystate_core.d
Loading eilmer-clean/steadystate_solver.d
Loading eilmer-clean/tecio.d
Loading eilmer-clean/tecplot_writer.d
Loading eilmer-clean/test-area.py
Loading eilmer-clean/testrivp.d
Loading eilmer-clean/ufluidblock.d
Loading eilmer-clean/user_defined_source_terms.d
None => No
object.Exception@DustMite/dustmite.d(271): Initial test fails (try using --no-redirect for details)
----------------
??:? _Dmain [0x556361]
peterj@helmholtz ~/dgd-play/src $ dustmite --no-redirect eilmer-clean ../dustmite-script.sh
Loading eilmer-clean/INSTALL
Loading eilmer-clean/README
Loading eilmer-clean/bc/boundary_cell_effect.d
Loading eilmer-clean/bc/boundary_condition.d
Loading eilmer-clean/bc/boundary_flux_effect.d
Loading eilmer-clean/bc/boundary_interface_effect.d
Loading eilmer-clean/bc/ghost_cell_effect/extrapolate_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/fixed_p.d
Loading eilmer-clean/bc/ghost_cell_effect/fixed_pt.d
Loading eilmer-clean/bc/ghost_cell_effect/flow_state_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/flow_state_copy_from_profile.d
Loading eilmer-clean/bc/ghost_cell_effect/from_stagnation.d
Loading eilmer-clean/bc/ghost_cell_effect/full_face_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/ghost_cell.d
Loading eilmer-clean/bc/ghost_cell_effect/internal_copy_then_reflect.d
Loading eilmer-clean/bc/ghost_cell_effect/mapped_cell_copy.d
Loading eilmer-clean/bc/ghost_cell_effect/package.d
Loading eilmer-clean/bc/package.d
Loading eilmer-clean/bc/user_defined_effects.d
Loading eilmer-clean/conservedquantities.d
Loading eilmer-clean/cuda_gpu_chem.d
Loading eilmer-clean/fileutil.d
Loading eilmer-clean/flowgradients.d
Loading eilmer-clean/flowsolution.d
Loading eilmer-clean/flowstate.d
Loading eilmer-clean/fluidblock.d
Loading eilmer-clean/fluxcalc.d
Loading eilmer-clean/fvcell.d
Loading eilmer-clean/fvcore.d
Loading eilmer-clean/fvinterface.d
Loading eilmer-clean/fvvertex.d
Loading eilmer-clean/gas_solid_interface.d
Loading eilmer-clean/globalconfig.d
Loading eilmer-clean/globaldata.d
Loading eilmer-clean/grid_motion.d
Loading eilmer-clean/history.d
Loading eilmer-clean/json_helper.d
Loading eilmer-clean/limiters.d
Loading eilmer-clean/loadbalance.d
Loading eilmer-clean/loads.d
Loading eilmer-clean/lsqinterp.d
Loading eilmer-clean/lua_helper.d
Loading eilmer-clean/luaflowsolution.d
Loading eilmer-clean/luaflowstate.d
Loading eilmer-clean/luaglobalconfig.d
Loading eilmer-clean/main.d
Loading eilmer-clean/main_with_rev_string.d
Loading eilmer-clean/makefile
Loading eilmer-clean/mass_diffusion.d
Loading eilmer-clean/onedinterp.d
Loading eilmer-clean/opencl_gpu_chem.d
Loading eilmer-clean/optdriver.d
Loading eilmer-clean/postprocess.d
Loading eilmer-clean/sfluidblock.d
Loading eilmer-clean/shape_sensitivity_calc.d
Loading eilmer-clean/shape_sensitivity_core.d
Loading eilmer-clean/shock_fitting_moving_grid.d
Loading eilmer-clean/simcore.d
Loading eilmer-clean/solid/luasolidprops.d
Loading eilmer-clean/solid/solid_boundary_flux_effect.d
Loading eilmer-clean/solid/solid_boundary_interface_effect.d
Loading eilmer-clean/solid/solid_loose_coupling_update.d
Loading eilmer-clean/solid/solid_udf_source_terms.d
Loading eilmer-clean/solid/solidbc.d
Loading eilmer-clean/solid/solidblock.d
Loading eilmer-clean/solid/solidfvcell.d
Loading eilmer-clean/solid/solidfvinterface.d
Loading eilmer-clean/solid/solidfvvertex.d
Loading eilmer-clean/solid/solidprops.d
Loading eilmer-clean/solid/solidsolution.d
Loading eilmer-clean/solid/ssolidblock.d
Loading eilmer-clean/special_block_init.d
Loading eilmer-clean/steadystate_core.d
Loading eilmer-clean/steadystate_solver.d
Loading eilmer-clean/tecio.d
Loading eilmer-clean/tecplot_writer.d
Loading eilmer-clean/test-area.py
Loading eilmer-clean/testrivp.d
Loading eilmer-clean/ufluidblock.d
Loading eilmer-clean/user_defined_source_terms.d
None => No
object.Exception@DustMite/dustmite.d(271): Initial test fails
----------------
??:? _Dmain [0x556361]
peterj@helmholtz ~/dgd-play/src $



August 14, 2019
On Wednesday, 14 August 2019 at 05:37:34 UTC, Peter Jacobs wrote:
> On Monday, 12 August 2019 at 12:17:00 UTC, Seb wrote:
>> [...]
>
> Using the suggestion of putting the command into a script, I gave dustmite a go but didn't get far.  The script itself seemed to have the correct behaviour when invoked from within the eilmer-clean directory.
>
> [...]


Did you follow the advice the tool gives you?

> try using --no-redirect for details

This means that the tester (DMD + grep) exited with a 0 exit code (i.e. no failure).

See also: https://github.com/CyberShadow/DustMite/wiki/Reducing-a-segmentation-fault
August 14, 2019
On Wednesday, 14 August 2019 at 07:13:43 UTC, Seb wrote:
>
> Did you follow the advice the tool gives you?
>
>> try using --no-redirect for details
>
> This means that the tester (DMD + grep) exited with a 0 exit code (i.e. no failure).
>
> See also: https://github.com/CyberShadow/DustMite/wiki/Reducing-a-segmentation-fault

Yes, there are the results of two attempts in that previous note. The second with --no-redirect.  I also checked, before running dustmite, that the script itself resulted in an exit code of 1.  It is likely that I am misunderstanding something, however, it seems to me that dustmite itself is failing.