Skip to content

dinitctl --offline disable/enable assertion fail #537

@ynsemrekmc

Description

@ynsemrekmc

This is my very first issue for any project, so I'm hoping you'll be patient and understanding with me.

Describe the bug
Disabling any service using dinitctl with the --offline / -o flag, the program will abort because of an assertion fail. Below is the output I get:

$ dinitctl -o disable service-name
/usr/include/c++/15.2.1/bits/unique_ptr.h:455: typename std::add_lvalue_reference<_Tp>::type std::unique_ptr<_Tp, _Dp>::operator*() const [with _Tp = cpbuffer<1024>; _Dp = std::default_delete<cpbuffer<1024> >; typename std::add_lvalue_reference<_Tp>::type = cpbuffer<1024>&]: Assertion 'get() != pointer()' failed.
aborted

To Reproduce

  1. Try disabling any service with the --offline flag.
    dinitctl --offline disable service-name

Expected behaviour
Remove the service file symlink from boot.d without also shutting down the said service.

Additional context
Both root and user instances of dinit has this problem, if that's a question you might ask.

The build I'm using:

$ dinit --version
Dinit version 0.21.0.
Supported features: cgroups utmp supplemental-groups capabilities io-priority oom-score-adjust
$ dinitctl --version
Dinit version 0.21.0.

I'm on Artix Linux, and downgrading dinit and dinit-base packages on Artix from 0.21.0 to 0.20.0 restores the expected behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions