Date: Wed, 23 May 2001 17:30:03 -0700 (PDT) From: gunther@aurora.regenstrief.org To: freebsd-gnats-submit@FreeBSD.org Subject: kern/27601: infinite loop at end (?) of ifnet list ... Message-ID: <200105240030.f4O0U3N72560@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 27601 >Category: kern >Synopsis: infinite loop at end (?) of ifnet list ... >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed May 23 17:40:01 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Gunther Schadow >Release: FreeBSD-4.2-RELEASE + KAME-SNAP end of April (last 4.2 based) >Organization: Regenstrief Institute >Environment: it's KAME SNAP the last 4.2-RELEASE based. Will try this with more recent release as soon as I have time to upgrade. >Description: Problem: apparently machine hangs during boot after device initialization. Turns out that it hangs in the pseudo device initialization. Peculiar but not unreasonable configuration makes this problem manifest. Problem appears (only) if I have only one real ethernet device with nwip and ef: device sis pseudo-device ef pseudo-device nwip (The nwip stuff is from Boris Popov of Kazachstan. I moved the if_nwip.c file into /sys/net and added links in /sys/conf/files.net etc.) I am not certain that this is necessarily a problem in if_nwip.c I went in with the kernel debugger and found the following: if_ef.c in ef_load() has an iteration through the ifnet list of network devices to find which are ethernets and then to clone its special ethernet-frame handlers. This iteration never terminates because the nwip pseudo-device entry in the ifnet list has a next link that points back to itself. Since nwip is not an ethernet device, this iteration "continues" before any resources are allocated or anything and thus this is just a very fast infinite loop. While it is suspicious that the infinite loop is around the nwip entry in the ifnet list, I do not hesitate to bother FreeBSD maintainers with this bug for two reasons: - the ifnet list belongs to the kernel and it should not be allowed for a module to insert an infinite loop to this list. - the problem goes away simply by adding an additional ethernet device probe into the config file. E.g., I just added device fxp0 behind the sis device even though I don't have an fxp card in that machine. I will upgrade to 4.3 RELEASE and try it again. I will then see if I can find anything wrong in the if_nwip.c stuff, if not I will chime again. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105240030.f4O0U3N72560>
