Problembeschreibung Kürzlich meldete ein Host die folgenden Kernel-Informationen: 8. Juli 10:47:42 cztest kernel: ------------[ hier abschneiden ]------------ 8. Juli 10:47:42 cztest-Kernel: WARNUNG: bei net/ipv4/tcp_input.c:2269 tcp_mark_head_lost+0x113/0x290() 8. Juli 10:47:42 cztest-Kernel: Eingebundene Module: iptable_filter ip_tables binfmt_misc cdc_ether usbnet mii xt_multiport dm_mirror dm_region_hash dm_log dm_mod intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm irqbypass crc32_p clmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd ipmi_ssif ipmi_devintf ipmi_si mei_me pcspkr iTCO_wdt mxm_wmi iTCO_vendor_support dcdbas mei sg sb_edac edac_core ipmi_msghandler shpchp lpc_ich wmi acpi_p Stromzähler xfs libcrc32c sd_mod crc_t10dif crct10dif_generic mgag200 drm_kms_helper crct10dif_pclmul crct10dif_common syscopyarea crc32c_intel sysfillrect sysimgblt fb_sys_fops igb ttm ptp drm ahci pps_core libahci dca i2c_algo_bit libat ein megaraid_sas i2c_core fjes [zuletzt entladen: ip_tables] 8. Juli 10:47:42 cztest Kernel: CPU: 10 PID: 0 Comm: swapper/10 Tainted: GW ------------ 3.10.0-514.16.1.el7.x86_64 #1 8. Juli 10:47:42 cztest Kernel: Hardwarename: Dell Inc. PowerEdge R630/02C2CP, BIOS 2.3.4 08.11.2016 8. Juli 10:47:42 cztest-Kernel: 0000000000000000 dd79fe633eacd853 ffff88103e743880 ffffffff81686ac3 8. Juli 10:47:42 cztest-Kernel: ffff88103e7438b8 ffffffff81085cb0 ffff8806d5c57800 ffff88010a4e6c80 8. Juli 10:47:42 cztest-Kernel: 0000000000000001 00000000f90e778c 00000000000000001 ffff88103e7438c8 8. Juli 10:47:42 cztest kernel: Call Trace: 8. Juli 10:47:42 cztest kernel: <IRQ> [<ffffffff81686ac3>] dump_stack+0x19/0x1b 8. Juli 10:47:42 cztest kernel: [<ffffffff81085cb0>] warn_slowpath_common+0x70/0xb0 8. Juli 10:47:42 cztest kernel: [<ffffffff81085dfa>] warn_slowpath_null+0x1a/0x20 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815c3663>] tcp_mark_head_lost+0x113/0x290 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815c3f47>] tcp_update_scoreboard+0x67/0x80 8. Juli 10:47:42 cztest kernel: [<ffffffff815c964d>] tcp_fastretrans_alert+0x6dd/0xb50 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815ca49d>] tcp_ack+0x8dd/0x12e0 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815cb3a8>] tcp_rcv_established+0x118/0x760 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815d5f8a>] tcp_v4_do_rcv+0x10a/0x340 8. Juli 10:47:42 cztest kernel: [<ffffffff812a84c6>] ? security_sock_rcv_skb+0x16/0x20 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815d76d9>] tcp_v4_rcv+0x799/0x9a0 8. Juli 10:47:42 cztest-Kernel: [<ffffffffa0140036>] ? iptable_filter_hook+0x36/0x80 [iptable_filter] 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815b1094>] ip_local_deliver_finish+0xb4/0x1f0 8. Juli 10:47:42 cztest kernel: [<ffffffff815b1379>] ip_local_deliver+0x59/0xd0 8. Juli 10:47:42 cztest kernel: [<ffffffff815b0fe0>] ? ip_rcv_finish+0x350/0x350 8. Juli 10:47:42 cztest kernel: [<ffffffff815b0d1a>] ip_rcv_finish+0x8a/0x350 8. Juli 10:47:42 cztest kernel: [<ffffffff815b16a6>] ip_rcv+0x2b6/0x410 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815700d2>] __netif_receive_skb_core+0x582/0x800 8. Juli 10:47:42 cztest kernel: [<ffffffff815dc694>] ? tcp4_gro_receive+0x134/0x1b0 8. Juli 10:47:42 cztest kernel: [<ffffffff811dc861>] ? __slab_free+0x81/0x2f0 8. Juli 10:47:42 cztest-Kernel: [<ffffffff81570368>] __netif_receive_skb+0x18/0x60 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815703f0>] netif_receive_skb_internal+0x40/0xc0 8. Juli 10:47:42 cztest kernel: [<ffffffff81571578>] napi_gro_receive+0xd8/0x130 8. Juli 10:47:42 cztest-Kernel: [<ffffffffa018b237>] igb_clean_rx_irq+0x387/0x700 [igb] 8. Juli 10:47:42 cztest-Kernel: [<ffffffff8155e862>] ? skb_release_data+0xf2/0x140 8. Juli 10:47:42 cztest-Kernel: [<ffffffffa018b933>] igb_poll+0x383/0x770 [igb] 8. Juli 10:47:42 cztest-Kernel: [<ffffffff815d3120>] ? tcp_write_timer_handler+0x200/0x200 8. Juli 10:47:42 cztest-Kernel: [<ffffffff81570c00>] net_rx_action+0x170/0x380 8. Juli 10:47:42 cztest-Kernel: [<ffffffff8108f63f>] __do_softirq+0xef/0x280 8. Juli 10:47:42 cztest kernel: [<ffffffff81698c1c>] call_softirq+0x1c/0x30 8. Juli 10:47:42 cztest-Kernel: [<ffffffff8102d365>] do_softirq+0x65/0xa0 8. Juli 10:47:42 cztest-Kernel: [<ffffffff8108f9d5>] irq_exit+0x115/0x120 8. Juli 10:47:42 cztest-Kernel: [<ffffffff816997b8>] do_IRQ+0x58/0xf0 8. Juli 10:47:42 cztest-Kernel: [<ffffffff8168e86d>] common_interrupt+0x6d/0x6d 8. Juli 10:47:42 cztest kernel: <EOI> [<ffffffff81514a22>] ? cpuidle_enter_state+0x52/0xc0 8. Juli 10:47:42 cztest-Kernel: [<ffffffff81514b69>] cpuidle_idle_call+0xd9/0x210 8. Juli 10:47:42 cztest kernel: [<ffffffff810350ee>] arch_cpu_idle+0xe/0x30 8. Juli 10:47:42 cztest-Kernel: [<ffffffff810e82a5>] cpu_startup_entry+0x245/0x290 8. Juli 10:47:42 cztest kernel: [<ffffffff8104f07a>] start_secondary+0x1ba/0x230 8. Juli 10:47:42 cztest-Kernel: --- [Ende der Ablaufverfolgung 6bc65b0c591c1794] --- Die Hostumgebung ist wie folgt:
Verarbeitungshinweise Der Stapeldruckvorgang ähnelt der Alarmverarbeitung von xfs. Der allgemeine Vorgang besteht darin, dass, nachdem der Kernel die Sack- und Fack-Funktionen aktiviert hat, die während der Netzwerkübertragung erforderlichen schnellen Neuübertragungen und selektiven Neuübertragungen von der Funktion tcp_mark_head_lost der Datei tcp_input.c verarbeitet werden. Sie markiert hauptsächlich die Anzahl der während der Übertragung verlorenen Pakete. Wie unten gezeigt, werden die vom System gemeldeten Kernel-Stapelinformationen durch den Funktionsaufruf tcp_verify_left_out in der Funktion tcp_mark_head_lost ausgelöst: // Quelle/include/net/tcp.h #define tcp_verify_left_out(tp) WARN_ON(tcp_left_out(tp) > tp->Pakete_out) statisches Inline-Int ohne Vorzeichen tcp_left_out (const struct tcp_sock *tp) { gibt tp->sacked_out + tp->lost_out zurück; } // Quelle/include/asm-generic/bug.h #define __WARN() warn_slowpath_null(__FILE__, __LINE__) #ifndef WARN_ON #define WARN_ON(Bedingung) ({ \ __WARN(); \ }) #endif // Quelle/net/ipv4/tcp_input.c /* Erkennen Sie einen Verlust im obigen Ereignis „A“, indem Sie den Anfang der Warteschlange als verloren markieren. * Für FACK- oder Nicht-SACK(Reno)-Sender die Anzahl der Segmente der ersten "Pakete" * gelten als verloren. Für RFC3517 SACK gilt ein Segment als verloren, wenn es * hat mindestens tp->reordering SACKed-Segmente darüber; "Pakete" bezieht sich auf * die maximale Anzahl an SACK-Segmenten, die passiert werden müssen, bevor dieses Limit erreicht wird. */ statisches void tcp_mark_head_lost(Struktur sock *sk, int Pakete, int mark_head) { Struktur tcp_sock *tp = tcp_sk(sk); .... tcp_verify_left_out(tp); // Dump_Stack auslösen } ... statisches void tcp_update_scoreboard(Struktur sock *sk, int fast_rexmit) { Struktur tcp_sock *tp = tcp_sk(sk); wenn (tcp_is_reno(tp)) { tcp_mark_head_lost(sk, 1, 1); } sonst wenn (tcp_ist_fack(tp)) { int verloren = tp->fackets_out - tp->Neuordnung; wenn (verloren <= 0) verloren = 1; tcp_mark_head_lost(sk, verloren, 0); } anders { int sacked_upto = tp->sacked_out - tp->Neuordnung; wenn (bis zu entlassen >= 0) tcp_mark_head_lost(sk, bis zu entlassen, 0); sonst wenn (fast_rexmit) tcp_mark_head_lost(sk, 1, 1); } } Laut der Beschreibung in redhat-536483 wird diese Fehlermeldung in der Regel durch einen TCP-Fehler verursacht, der ausgelöst werden kann, wenn der Kernel eine freigegebene TCP-Socket-Pufferliste verwendet:
Verarbeitung Aktualisieren des Kernels Wie unten gezeigt, hat Redhat möglicherweise den Use-After-Free-Bug von tcp_*-bezogenen Funktionen in Version 3.10.0-520 behoben. Sie können versuchen, ein Upgrade durchzuführen, um dieses Problem zu lösen: * Do., 3. November 2016 Rafael Aquini <[email protected]> [3.10.0-520.el7] - [net] tcp: Fehlerbehebung bei Verwendung nach Freigabe in tcp_xmit_retransmit_queue() (Mateusz Guzik) [1379531] {CVE-2016-6828} Fack/Sack-Funktion deaktivieren Aus der Dokumentation der Red Hat Knowledge Base geht hervor, dass die Funktion tcp_mark_head_lost hauptsächlich verwendet wird, um die Anzahl der Pakete zu markieren, die während der schnellen erneuten Übertragung und der selektiven Bestätigung verloren gegangen sind. Daher ist es möglicherweise möglich, die Fack/Sack-Parameter vorübergehend zu deaktivieren, um dieses Problem zu vermeiden: sysctl -w net.ipv4.tcp_fack=0 sysctl -w net.ipv4.tcp_sack=0 Sie können zunächst die zweite Methode ausprobieren und, wenn das Problem weiterhin besteht, ein Upgrade der Kernelversion in Betracht ziehen. siehe redhat-536483 Fehler-1367091 CVE-2016-6828 Kernel-Commit Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Installations- und Konfigurationsschritte für die grüne Dekomprimierungsversion von MySQL
>>: Besprechen Sie die Anwendung von Mixin in Vue
1. Kompatibilität Wie unten dargestellt: Die Komp...
Es ist ganz einfach, Nachrichten an andere Benutz...
Inhaltsverzeichnis Installieren Sie Tomcat Laden ...
Funktion 0. Aktuelle Uhrzeit anzeigen Befehl: sel...
Tabellen spielten einst eine sehr wichtige Rolle ...
Weitergabe von Daten Welche Art von Daten müssen ...
Die SSH-Public-Key-Authentifizierung ist eine der...
Frage Frage 1: Wie kann der Leistungsverlust beho...
Inhaltsverzeichnis 1. Array-Deduplizierung 2. Ded...
In letzter Zeit muss ich im Projektverlauf häufig ...
Die Seitenlänge im Projekt beträgt etwa 2000 Pixe...
Inhaltsverzeichnis Hintergrund Funktion Zweck Ide...
Einführung: Im Internet gibt es zahlreiche Inform...
Die domänenübergreifende Nginx-Konfiguration wird...
Die Installation von MySQL 8.0.12 dauerte zwei Ta...