unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present
@ 2019-12-08  8:59 Brice Waegeneire
  2019-12-10 17:11 ` Ludovic Courtès
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Brice Waegeneire @ 2019-12-08  8:59 UTC (permalink / raw)
  To: 38524

The 'dhcp-client-service' fail to start when a non-libre network 
interface (here 148f:3070) is plugged-in even though there is an libre 
networking interface (here 01:00.0) available.
Removing the non-libre networking interface from the system allow 
'dhcp-client-service' to start correctly on the libre networking 
interface.

I think the service shouldn't crash when there is an non-libre network 
interface connected, it should just skip it and maybe throw an error 
message. Allowing to specify the network interfaces on which 
'dhcp-client-service' should run can also somewhat resolve the issue.


#+begin_src sh
$ sudo herd start networking
[ 2758.305139] 1-3:1.0: Missing Free firmware (non-Free firmware loading 
is disabled)
[ 2758.395791] ieee80211 phy0: rt2x00lib_request_firmware: Error - 
Failed to request Firmware
herd: exception caught while executing 'start' on service 'networking':
In procedure set-network-interface-flags: set-network-interface-flags on 
wlp0s20f0u3: No such file or directory

$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
group default qlen 1000
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast 
state DOWN group default qlen 1000
     link/ether 00:e0:4c:68:67:77 brd ff:ff:ff:ff:ff:ff
3: wlp0s20f0u3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN 
group default qlen 1000
     link/ether 00:c0:ca:77:05:e7 brd ff:ff:ff:ff:ff:ff

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 
Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core 
Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 
(rev 02)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / 
E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI 
Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP 
Thermal subsystem (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA 
Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root 
Port #3 (rev f1)
00:1e.0 Signal processing controller: Intel Corporation Sunrise Point-LP 
Serial IO UART Controller #0 (rev 21)
00:1e.4 SD Host controller: Intel Corporation Device 9d2b (rev 21)
00:1e.6 SD Host controller: Intel Corporation Sunrise Point-LP Secure 
Digital IO Controller (rev 21)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller 
(rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 
21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 
21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. 
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 07)
#+end_src

#+begin_src scheme
(services
     (append
       (list (service openssh-service-type)
             (service dhcp-client-service-type))
       %base-services)))
#+end_src

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present
  2019-12-08  8:59 bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present Brice Waegeneire
@ 2019-12-10 17:11 ` Ludovic Courtès
  2019-12-10 21:25   ` Brice Waegeneire
  2019-12-13 21:56 ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free Brice Waegeneire
  2019-12-14  7:23 ` bug#38524: [PATCH v2] " Brice Waegeneire
  2 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2019-12-10 17:11 UTC (permalink / raw)
  To: Brice Waegeneire; +Cc: 38524

Hi Brice,

Brice Waegeneire <brice@waegenei.re> skribis:

> The 'dhcp-client-service' fail to start when a non-libre network 
> interface (here 148f:3070) is plugged-in even though there is an libre 
> networking interface (here 01:00.0) available.
> Removing the non-libre networking interface from the system allow 
> 'dhcp-client-service' to start correctly on the libre networking 
> interface.

By “non-libre interface”, I guess you mean a network interface that
relies on non-free firmware, right?

> $ sudo herd start networking
> [ 2758.305139] 1-3:1.0: Missing Free firmware (non-Free firmware loading 
> is disabled)
> [ 2758.395791] ieee80211 phy0: rt2x00lib_request_firmware: Error - 
> Failed to request Firmware
> herd: exception caught while executing 'start' on service 'networking':

So here the problem is that Linux-libre fails to load the non-free
firmware.  Could you bring it up on the Linux-libre development mailing
list?

I believe Linux-libre aims to allow people who want it to use non-free
firmware—it just disables it by default.  Now, I’d encourage you to
consider using hardware that does not rely on non-free firmware.  :-)

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present
  2019-12-10 17:11 ` Ludovic Courtès
@ 2019-12-10 21:25   ` Brice Waegeneire
  2019-12-12 13:07     ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Brice Waegeneire @ 2019-12-10 21:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 38524

On 2019-12-10 18:11, Ludovic Courtès wrote:
> So here the problem is that Linux-libre fails to load the non-free
> firmware.  Could you bring it up on the Linux-libre development mailing
> list?
Doing some research on how linux-libre behave it seems normal that it
doesn't allow the loading of non-free firmware. So I think the issue is
on the Guix side; in dhcp-client-service stopping on an error and not
continuing to try other interface. If you don't think so what should I
bring up to the linux-libre mailing list?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present
  2019-12-10 21:25   ` Brice Waegeneire
@ 2019-12-12 13:07     ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2019-12-12 13:07 UTC (permalink / raw)
  To: Brice Waegeneire; +Cc: 38524

Hello,

Brice Waegeneire <brice@waegenei.re> skribis:

> On 2019-12-10 18:11, Ludovic Courtès wrote:
>> So here the problem is that Linux-libre fails to load the non-free
>> firmware.  Could you bring it up on the Linux-libre development mailing
>> list?
> Doing some research on how linux-libre behave it seems normal that it
> doesn't allow the loading of non-free firmware.

It obviously doesn’t do it by default, but my understanding is that the
goal is to allow it (you could check with them).

> So I think the issue is on the Guix side; in dhcp-client-service
> stopping on an error and not continuing to try other interface. If you
> don't think so what should I bring up to the linux-libre mailing list?

‘dhcp-client-service’ passes the DHCP client the list of interfaces that
are “valid” (see gnu/services/networking.scm).  Could you find out why
yours is considered “valid” when it shouldn’t?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free
  2019-12-08  8:59 bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present Brice Waegeneire
  2019-12-10 17:11 ` Ludovic Courtès
@ 2019-12-13 21:56 ` Brice Waegeneire
  2019-12-13 21:56   ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free firmware Brice Waegeneire
  2019-12-14  7:23 ` bug#38524: [PATCH v2] " Brice Waegeneire
  2 siblings, 1 reply; 9+ messages in thread
From: Brice Waegeneire @ 2019-12-13 21:56 UTC (permalink / raw)
  To: 38524

This patch allow dhcp-client-service to start even when an interface that
require non free-software is present; such device will be skipped.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free firmware.
  2019-12-13 21:56 ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free Brice Waegeneire
@ 2019-12-13 21:56   ` Brice Waegeneire
  2019-12-14  4:39     ` Brett Gilio
  0 siblings, 1 reply; 9+ messages in thread
From: Brice Waegeneire @ 2019-12-13 21:56 UTC (permalink / raw)
  To: 38524

* gnu/services/networking.scm (dhcp-client-service-type): Filter interfaces
that need non-free firmware.
---
 gnu/services/networking.scm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 93d9b6a15e..7a57e33974 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -223,14 +223,14 @@ fe80::1%lo0 apps.facebook.com\n")
                  (define valid?
                    (lambda (interface)
                      (and (arp-network-interface? interface)
-                          (not (loopback-network-interface? interface)))))
+                          (not (loopback-network-interface? interface))
+                          ;; XXX: Make sure the interfaces are up so that
+                          ;; 'dhclient' can actually send/receive over them.
+                          (false-if-exception
+                           (set-network-interface-up interface)))))
                  (define ifaces
                    (filter valid? (all-network-interface-names)))
 
-                 ;; XXX: Make sure the interfaces are up so that 'dhclient' can
-                 ;; actually send/receive over them.
-                 (for-each set-network-interface-up ifaces)
-
                  (false-if-exception (delete-file #$pid-file))
                  (let ((pid (fork+exec-command
                              (cons* #$dhclient "-nw"
-- 
2.19.2

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free firmware.
  2019-12-13 21:56   ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free firmware Brice Waegeneire
@ 2019-12-14  4:39     ` Brett Gilio
  0 siblings, 0 replies; 9+ messages in thread
From: Brett Gilio @ 2019-12-14  4:39 UTC (permalink / raw)
  To: Brice Waegeneire; +Cc: 38524


This LGTM, though I'd add a comment noting this bug report or something so it is known why this behavior was adjusted.

Dec 13, 2019 3:57:14 PM Brice Waegeneire <brice@waegenei.re>:

> * gnu/services/networking.scm (dhcp-client-service-type): Filter interfaces
> that need non-free firmware.
> ---
> gnu/services/networking.scm | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
> index 93d9b6a15e..7a57e33974 100644
> --- a/gnu/services/networking.scm
> +++ b/gnu/services/networking.scm
> @@ -223,14 +223,14 @@ fe80::1%lo0 apps.facebook.com\n")
> (define valid?
> (lambda (interface)
> (and (arp-network-interface? interface)
> - (not (loopback-network-interface? interface)))))
> + (not (loopback-network-interface? interface))
> + ;; XXX: Make sure the interfaces are up so that
> + ;; 'dhclient' can actually send/receive over them.
> + (false-if-exception
> + (set-network-interface-up interface)))))
> (define ifaces
> (filter valid? (all-network-interface-names)))
> 
> - ;; XXX: Make sure the interfaces are up so that 'dhclient' can
> - ;; actually send/receive over them.
> - (for-each set-network-interface-up ifaces)
> -
> (false-if-exception (delete-file #$pid-file))
> (let ((pid (fork+exec-command
> (cons* #$dhclient "-nw"
> -- 
> 2.19.2
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* bug#38524: [PATCH v2] services: dhcp-client: Ignore interfaces that need non-free firmware.
  2019-12-08  8:59 bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present Brice Waegeneire
  2019-12-10 17:11 ` Ludovic Courtès
  2019-12-13 21:56 ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free Brice Waegeneire
@ 2019-12-14  7:23 ` Brice Waegeneire
  2019-12-29 16:50   ` Ludovic Courtès
  2 siblings, 1 reply; 9+ messages in thread
From: Brice Waegeneire @ 2019-12-14  7:23 UTC (permalink / raw)
  To: 38524

Fixes bug #38524 (see: https://bugs.gnu.org/38524).

* gnu/services/networking.scm (dhcp-client-service-type): Filter interfaces
that need non-free firmware.
---
This patch version contains a link to the issue as Brett asked.

 gnu/services/networking.scm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 93d9b6a15e..7a57e33974 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -223,14 +223,14 @@ fe80::1%lo0 apps.facebook.com\n")
                  (define valid?
                    (lambda (interface)
                      (and (arp-network-interface? interface)
-                          (not (loopback-network-interface? interface)))))
+                          (not (loopback-network-interface? interface))
+                          ;; XXX: Make sure the interfaces are up so that
+                          ;; 'dhclient' can actually send/receive over them.
+                          (false-if-exception
+                           (set-network-interface-up interface)))))
                  (define ifaces
                    (filter valid? (all-network-interface-names)))
 
-                 ;; XXX: Make sure the interfaces are up so that 'dhclient' can
-                 ;; actually send/receive over them.
-                 (for-each set-network-interface-up ifaces)
-
                  (false-if-exception (delete-file #$pid-file))
                  (let ((pid (fork+exec-command
                              (cons* #$dhclient "-nw"
-- 
2.19.2

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* bug#38524: [PATCH v2] services: dhcp-client: Ignore interfaces that need non-free firmware.
  2019-12-14  7:23 ` bug#38524: [PATCH v2] " Brice Waegeneire
@ 2019-12-29 16:50   ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2019-12-29 16:50 UTC (permalink / raw)
  To: Brice Waegeneire; +Cc: 38524-done

Hello Brice,

Brice Waegeneire <brice@waegenei.re> skribis:

> Fixes bug #38524 (see: https://bugs.gnu.org/38524).
>
> * gnu/services/networking.scm (dhcp-client-service-type): Filter interfaces
> that need non-free firmware.

I adjusted the commit log (I’m not applying it just because it helps
with non-free firmware but rather because it seems more accurate and
generally useful), and finally committed.

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-12-29 16:51 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-08  8:59 bug#38524: 'dhcp-client-service' crash when non-libre networking interface is present Brice Waegeneire
2019-12-10 17:11 ` Ludovic Courtès
2019-12-10 21:25   ` Brice Waegeneire
2019-12-12 13:07     ` Ludovic Courtès
2019-12-13 21:56 ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free Brice Waegeneire
2019-12-13 21:56   ` bug#38524: [PATCH] services: dhcp-client: Ignore interfaces that need non-free firmware Brice Waegeneire
2019-12-14  4:39     ` Brett Gilio
2019-12-14  7:23 ` bug#38524: [PATCH v2] " Brice Waegeneire
2019-12-29 16:50   ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).