Subject: bug#33999: CP437: Invalid Argument on init

From: Bryan Ferris <[email-masked]>
Date: Fri, 18 Jan 2019 11:00:14 -0800

I think I know why d-bus is failing to start. The error when it tries to is
as follows:

"Failed to start message bus: Error in file /etc/dbus-1/system-local.conf,
line 1, column 0: no element found"

The first possibility came up when I searched /gnu/store for
system-local.conf. There is only one instance of such a file, and it is
empty. According to https://dbus.freedesktop.org/doc/dbus-daemon.1.html,
the (xml) file *must* contain the following line at a minimum:

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
    "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

The error message makes a lot of sense with this in mind. Since I can't
just edit the file to add the line, can you recommend a way to fix this?

On Wed, Jan 16, 2019 at 7:43 AM Bryan Ferris <[email-masked]> wrote:

> Hey Danny,
>
> Sorry for the delay in response. I saw no behavior change until I added
> the (mount? #f) line. This fixed a number of services, but d-bus fails to
> start. I encounter further issues including X Server failing to start and
> the inability to log in (when I type in a valid username it immediately
> fails 3 times and prints the standard message... I don't have password
> hashes in my config, but IIRC last time I installed guix I was able to log
> in without setting a password either imperatively or declaratively). Due to
> the latter issue I was unable to test the program you posted, but it sounds
> like Ludovic was able to describe what would happen if I had been able to?
> I assume the non-d-bus errors are related to the lack of d-bus.
>
> I uploaded a new video of my startup at
> https://drive.google.com/file/d/1bVdiCM1BKAmY-1y1XydI4ol7BCCkQ2Xk/view?usp=drivesdk
> It's ~50s long, but seconds 20-45 are the system retrying d-bus a number of
> times.
>
> On Thu, Jan 10, 2019 at 10:21 AM Danny Milosavljevic <
> [email-masked]> wrote:
>
>> Also, if you want, please try the following program on the booted guix
>> system:
>>
>> #include <stdio.h>
>> #include <locale.h>
>> #include <iconv.h>
>> #include <langinfo.h>
>>
>> static iconv_t iconv_init_codepage(int codepage)
>> {
>>     iconv_t result;
>>     char codepage_name[16];
>>     snprintf(codepage_name, sizeof(codepage_name), "CP%d", codepage);
>>     result = iconv_open(nl_langinfo(CODESET), codepage_name);
>>     if (result == (iconv_t) - 1) {
>>         printf("FOO\n");
>>         perror(codepage_name);
>>         printf("BAR\n");
>>     }
>>     return result;
>> }
>>
>> int main() {
>>         setlocale(LC_ALL, "");
>>         iconv_init_codepage(437);
>>         return 0;
>> }
>>
>> You'd have to put the above text into a file called "a.c", then invoke
>>
>> guix package -i gcc-toolchain
>>
>> Then invoke
>>
>> gcc -o a a.c
>>
>> Then invoke
>>
>> ./a
>>
>> I suspect it will also fail with the same error message.
>>
>> After that, please invoke
>>
>> iconv -l |grep -i cp437
>>
>> It will probably either return nothing or even fail with an error message.
>>
>
> On Thu, Jan 10, 2019 at 10:21 AM Danny Milosavljevic <
> [email-masked]> wrote:
>
>> Also, if you want, please try the following program on the booted guix
>> system:
>>
>> #include <stdio.h>
>> #include <locale.h>
>> #include <iconv.h>
>> #include <langinfo.h>
>>
>> static iconv_t iconv_init_codepage(int codepage)
>> {
>>     iconv_t result;
>>     char codepage_name[16];
>>     snprintf(codepage_name, sizeof(codepage_name), "CP%d", codepage);
>>     result = iconv_open(nl_langinfo(CODESET), codepage_name);
>>     if (result == (iconv_t) - 1) {
>>         printf("FOO\n");
>>         perror(codepage_name);
>>         printf("BAR\n");
>>     }
>>     return result;
>> }
>>
>> int main() {
>>         setlocale(LC_ALL, "");
>>         iconv_init_codepage(437);
>>         return 0;
>> }
>>
>> You'd have to put the above text into a file called "a.c", then invoke
>>
>> guix package -i gcc-toolchain
>>
>> Then invoke
>>
>> gcc -o a a.c
>>
>> Then invoke
>>
>> ./a
>>
>> I suspect it will also fail with the same error message.
>>
>> After that, please invoke
>>
>> iconv -l |grep -i cp437
>>
>> It will probably either return nothing or even fail with an error message.
>>
>