Bug 8654 - possible connect() bug
Summary: possible connect() bug
Status: REJECTED UNREPRODUCIBLE
Alias: None
Product: Networking
Classification: Unclassified
Component: Other (show other bugs)
Hardware: All Linux
: P1 low
Assignee: Arnaldo Carvalho de Melo
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-06-20 03:59 UTC by Sergey V. Efimoff
Modified: 2021-01-20 09:43 UTC (History)
2 users (show)

See Also:
Kernel Version: Linux version 2.6.21.1 (risky@001134.localnet) (gcc version 3.3.
Subsystem:
Regression: ---
Bisected commit-id:


Attachments

Description Sergey V. Efimoff 2007-06-20 03:59:55 UTC
Most recent kernel where this bug did not occur:
none

Distribution:
Slackware

Hardware Environment:
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 15
model		: 3
model name	: Intel(R) Pentium(R) 4 CPU 3.00GHz
stepping	: 4
cpu MHz		: 2992.643
cache size	: 1024 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 5
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe constant_tsc pni monitor ds_cpl cid xtpr
bogomips	: 5990.17
clflush size	: 64

0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0077 : rtc
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : 0000:00:1f.2
  0170-0177 : ide1
01f0-01f7 : 0000:00:1f.2
  01f0-01f7 : libata
02f8-02ff : serial
0376-0376 : 0000:00:1f.2
  0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : 0000:00:1f.2
  03f6-03f6 : libata
03f8-03ff : serial
0400-047f : 0000:00:1f.0
  0400-0403 : ACPI PM1a_EVT_BLK
  0404-0405 : ACPI PM1a_CNT_BLK
  0408-040b : ACPI PM_TMR
  0428-042f : ACPI GPE0_BLK
0480-04bf : 0000:00:1f.0
0500-051f : 0000:00:1f.3
  0500-051f : i801_smbus
0cf8-0cff : PCI conf1
8000-afff : PCI Bus #03
  8000-801f : 0000:03:08.0
    8000-801f : envy24
  8400-840f : 0000:03:08.0
  8800-880f : 0000:03:08.0
  8c00-8c3f : 0000:03:08.0
    8c00-8c3f : envy24
  9000-903f : 0000:03:0a.0
    9000-903f : e1000
  9400-943f : 0000:03:0b.0
  9800-980f : 0000:03:0b.0
  9c00-9c7f : 0000:03:0b.0
  a000-a0ff : 0000:03:0c.0
b000-bfff : PCI Bus #01
  b000-b01f : 0000:01:01.0
    b000-b01f : e1000
f000-f00f : 0000:00:1f.2
  f000-f00f : libata
00000000-0009f7ff : System RAM
0009f800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000c8000-000c8fff : Adapter ROM
000c9000-000cbfff : pnp 00:0c
000f0000-000fffff : System ROM
00100000-7ffeffff : System RAM
  00100000-003b910f : Kernel code
  003b9110-00517f5b : Kernel data
7fff0000-7fff2fff : ACPI Non-volatile Storage
7fff3000-7fffffff : ACPI Tables
88000000-880fffff : PCI Bus #03
  88000000-8801ffff : 0000:03:0c.0
f0000000-f7ffffff : 0000:00:00.0
f8000000-faffffff : PCI Bus #03
  f8000000-f8ffffff : 0000:03:0c.0
  fa000000-fa01ffff : 0000:03:0a.0
    fa000000-fa01ffff : e1000
  fa020000-fa03ffff : 0000:03:0b.0
  fa040000-fa040fff : 0000:03:0c.0
  fa041000-fa041fff : 0000:03:0b.0
fb000000-fb0fffff : PCI Bus #02
  fb000000-fb0001ff : 0000:02:02.0
    fb000000-fb0001ff : saa7146
fb100000-fb1fffff : PCI Bus #01
  fb100000-fb11ffff : 0000:01:01.0
    fb100000-fb11ffff : e1000
fec00000-ffffffff : reserved
00:00.0 Host bridge: Intel Corp. 82875P Memory Controller Hub (rev 02)
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
	Latency: 0
	Region 0: Memory at f0000000 (32-bit, prefetchable) [size=128M]
	Capabilities: [e4] #09 [3106]

00:03.0 PCI bridge: Intel Corp. 82875P Processor to PCI to CSA Bridge (rev 02) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000b000-0000bfff
	Memory behind bridge: fb100000-fb1fffff
	Prefetchable memory behind bridge: fff00000-000fffff
	BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B-

00:1c.0 PCI bridge: Intel Corp. Enterprise Southbridge Hublink PCI-X Bridge (rev 02) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR+
	Latency: 32, cache line size 10
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=48
	I/O behind bridge: 0000f000-00000fff
	Memory behind bridge: fb000000-fb0fffff
	Prefetchable memory behind bridge: 00000000fff00000-0000000000000000
	BridgeCtl: Parity- SERR+ NoISA+ VGA- MAbort- >Reset- FastB2B-
	Capabilities: [50] PCI-X bridge device.
		Secondary Status: 64bit+, 133MHz-, SCD-, USC-, SCO-, SRD- Freq=0
		Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-, SCO-, SRD-
		: Upstream: Capacity=0, Commitment Limit=0
		: Downstream: Capacity=0, Commitment Limit=0

00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB/ER Hub interface to PCI Bridge (rev 0a) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 0
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=32
	I/O behind bridge: 00008000-0000afff
	Memory behind bridge: f8000000-faffffff
	Prefetchable memory behind bridge: 88000000-880fffff
	BridgeCtl: Parity- SERR+ NoISA+ VGA+ MAbort- >Reset- FastB2B-

00:1f.0 ISA bridge: Intel Corp. Enterprise Southbridge ISA Bridge (rev 02)
	Control: I/O+ Mem+ BusMaster+ SpecCycle+ MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 0

00:1f.2 IDE interface: Intel Corp. Enterprise Southbridge SATA cc=IDE (rev 02) (prog-if 8a [Master SecP PriP])
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 0
	Interrupt: pin A routed to IRQ 11
	Region 0: I/O ports at 01f0 [size=8]
	Region 1: I/O ports at 03f4
	Region 2: I/O ports at 0170 [size=8]
	Region 3: I/O ports at 0374
	Region 4: I/O ports at f000 [size=16]

00:1f.3 SMBus: Intel Corp. Enterprise Southbridge SMBUS (rev 02)
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Interrupt: pin B routed to IRQ 9
	Region 4: I/O ports at 0500 [size=32]

01:01.0 Ethernet controller: Intel Corp. 82547GI Gigabit Ethernet Controller
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 0 (63750ns min), cache line size 08
	Interrupt: pin A routed to IRQ 11
	Region 0: Memory at fb100000 (32-bit, non-prefetchable) [size=128K]
	Region 2: I/O ports at b000 [size=32]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-

02:02.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)
	Subsystem: Technotrend Systemtechnik GmbH: Unknown device 100f
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR+
	Latency: 32 (3750ns min, 9500ns max)
	Interrupt: pin A routed to IRQ 9
	Region 0: Memory at fb000000 (32-bit, non-prefetchable) [size=512]

03:08.0 Multimedia audio controller: IC Ensemble Inc ICE1712 [Envy24] (rev 02)
	Subsystem: IC Ensemble Inc: Unknown device d634
	Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32
	Interrupt: pin A routed to IRQ 9
	Region 0: I/O ports at 8000 [size=32]
	Region 1: I/O ports at 8400 [size=16]
	Region 2: I/O ports at 8800 [size=16]
	Region 3: I/O ports at 8c00 [size=64]
	Capabilities: [80] Power Management version 1
		Flags: PMEClk- DSI- D1- D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

03:0a.0 Ethernet controller: Intel Corp. 82541GI/PI Gigabit Ethernet Controller
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (63750ns min), cache line size 08
	Interrupt: pin A routed to IRQ 12
	Region 0: Memory at fa000000 (32-bit, non-prefetchable) [size=128K]
	Region 2: I/O ports at 9000 [size=64]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [e4] PCI-X non-bridge device.
		Command: DPERE- ERO+ RBC=0 OST=0
		Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-, DC=simple, DMMRBC=0, DMOST=0, DMCRS=0, RSCEM-
03:0b.0 RAID bus controller: Promise Technology, Inc.: Unknown device 3373 (rev 02)
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
	Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 96 (1000ns min, 4500ns max), cache line size 90
	Interrupt: pin A routed to IRQ 10
	Region 0: I/O ports at 9400 [size=64]
	Region 1: I/O ports at 9800 [size=16]
	Region 2: I/O ports at 9c00 [size=128]
	Region 3: Memory at fa041000 (32-bit, non-prefetchable) [size=4K]
	Region 4: Memory at fa020000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: [60] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

03:0c.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27) (prog-if 00 [VGA])
	Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
	Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
	Latency: 32 (2000ns min), cache line size 08
	Interrupt: pin A routed to IRQ 5
	Region 0: Memory at f8000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: I/O ports at a000 [size=256]
	Region 2: Memory at fa040000 (32-bit, non-prefetchable) [size=4K]
	Expansion ROM at 88000000 [disabled] [size=128K]
	Capabilities: [5c] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-

Software Environment:

Minimal slackware installation, kernel downloaded from kernel.org

Problem Description:

connect() syscall normally reports "no route to host" when is called while network cable is
unplugged, and ethernet interface is up and configured. But it hangs eternally and utilizes
processor up to 100% if one tries to plug ethernet cable in, here two cases:
a) socket is blocking, connect() is called and did not completed, current syscall hangs
b) socket is non-blocking, connect() normally returns EINPROGRESS, next syscall hangs

Steps to reproduce:

Just try to plug ethernet cable in while trying to connect()
Comment 1 Andrew Morton 2007-06-20 10:01:24 UTC
Subject: Re: [Bugme-new]  New: possible connect() bug

> On Wed, 20 Jun 2007 03:56:28 -0700 (PDT) bugme-daemon@bugzilla.kernel.org
> wrote:
> http://bugzilla.kernel.org/show_bug.cgi?id=8654
> 
>            Summary: possible connect() bug
>            Product: Networking
>            Version: 2.5
>      KernelVersion: Linux version 2.6.21.1 (risky@001134.localnet) (gcc
>                     version 3.3.
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: low
>           Priority: P1
>          Component: Other
>         AssignedTo: acme@ghostprotocols.net
>         ReportedBy: risky@mail.ru
> 
> 
> ...
>
> 01:01.0 Ethernet controller: Intel Corp. 82547GI Gigabit Ethernet Controller
>         Subsystem: Micro-Star International Co., Ltd.: Unknown device 1490
>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B-
>         Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
> <TAbort- <MAbort- >SERR- <PERR-
>         Latency: 0 (63750ns min), cache line size 08
>         Interrupt: pin A routed to IRQ 11
>         Region 0: Memory at fb100000 (32-bit, non-prefetchable) [size=128K]
>         Region 2: I/O ports at b000 [size=32]
>         Capabilities: [dc] Power Management version 2
>                 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA
> PME(D0+,D1-,D2-,D3hot+,D3cold+)
>                 Status: D0 PME-Enable- DSel=0 DScale=1 PME-
> 
> ...
> 
> Minimal slackware installation, kernel downloaded from kernel.org
> 
> Problem Description:
> 
> connect() syscall normally reports "no route to host" when is called while
> network cable is
> unplugged, and ethernet interface is up and configured. But it hangs
> eternally
> and utilizes
> processor up to 100% if one tries to plug ethernet cable in, here two cases:
> a) socket is blocking, connect() is called and did not completed, current
> syscall hangs
> b) socket is non-blocking, connect() normally returns EINPROGRESS, next
> syscall
> hangs
> 
> Steps to reproduce:
> 
> Just try to plug ethernet cable in while trying to connect()
> 

That might be a device driver bug.  Please generate a kernel profile while
it is occuring (Documentation/basic_profiling.txt) and/or generate a few
sysrq-P traces.  Send them via emailed reply-to-all to this email.

I'll be travelling for the next few days, but hopefully one of the netdev
developers will be able to work with you on this, thanks.  
Comment 2 Auke Kok 2007-07-20 10:13:13 UTC
Why is this assigned to Arnaldo?

I find it hard to believe this is a driver bug right now ... the stack should be able to handle a device being plugged in I think ;)
Comment 3 Patrick McManus 2008-02-15 07:12:26 UTC
I tried to reproduce this today on 2.6.22 X86_64 without success.

If I leave the cable unplugged I get "no route to host", if I plug the cable in during the connect() call the call actually succeeds.

I don't see how it could be a driver bug - but my test was with a different nic than the original poster:

01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller (rev 01)
Comment 4 Jeffrin Jose 2008-08-26 08:58:50 UTC
(In reply to comment #3)
> I tried to reproduce this today on 2.6.22 X86_64 without success.
> 
> If I leave the cable unplugged I get "no route to host", if I plug the cable
> in
> during the connect() call the call actually succeeds.
> 
> I don't see how it could be a driver bug - but my test was with a different
> nic
> than the original poster:
> 
> 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E PCI
> Express Fast Ethernet controller (rev 01)
> 

how can you plug in the cable during the call ?
please tell me how to issue a connect system call and then try plugging in the cable.

Note You need to log in before you can comment on or make changes to this bug.