Example:
DAG structure:
```
default_args = {
    'owner': 'dimon',
    'depends_on_past': False,
    'start_date': datetime(2021, 1, 10)
}

dag = DAG(
    'dummy-dag',
    schedule_interval='21 2 * * *',
    catchup=False,
    default_args=default_args
)

DagContext.push_context_managed_dag(dag)
task1 = BashOperator(task_id='task1', bash_command='echo 1')
task2 = BashOperator(task_id='task2', bash_command='echo 2')
task2 << task1
task3 = BashOperator(task_id='task3', bash_command='echo 3')
```

Let’s say you’ve missed the button and typed `--task-regex task4`.
When the backfill starts, firstly it will create a new empty DagRun and puts it in DB. Then the backfill job will go and try to find tasks that match the regex you’ve entered, will not find any obviously and will be stuck in the “running” state together with newly created DagRun forever.

airflow/cli/commands/dag_command.py
if dag:
        args.dag_id = dag.dag_id
    dagbag = DagBag()
    if args.dag_id is not None and args.dag_id not in dagbag.dags:
        error_message = f"Dag id {args.dag_id} not found"
        raise AirflowException(error_message)
    state = args.state.lower() if args.state else None
    dag_runs = DagRun.find(
        dag_id=args.dag_id,
        state=state,
        no_backfills=args.no_backfill,
        execution_start_date=args.start_date,
        execution_end_date=args.end_date,
    )
    dag_runs.sort(key=lambda x: x.execution_date, reverse=True)
    AirflowConsole().print_as(
        data=dag_runs,
        output=args.output,
        mapper=lambda dr: {
            "dag_id": dr.dag_id,
            "run_id": dr.run_id,
            "state": dr.state,
            "execution_date": dr.execution_date.isoformat(),
            "start_date": dr.start_date.isoformat() if dr.start_date else '',
            "end_date": dr.end_date.isoformat() if dr.end_date else '',
        },
    )
@provide_session
@cli_utils.action_logging
def dag_test(args, session=None):