佚名通过本文主要向大家介绍了向顺序栈中压入元素时,调用函数时的压栈顺序,栈溢出,栈溢出的原因,堆溢出栈溢出等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:中断处理时发生栈溢出
描述:
解决方案1:
描述:
如下,中断处理时发生栈溢出。
中断里面又发生了中断?
kernel方面知识欠缺,烦请高手赐教。
Pid: 0, comm: swapper Not tainted 2.6.32.63 #17
Call Trace:
[<c10043f3>] ? print_stack_overflow+0xa/0x10
<IRQ> [<c1003c11>] ? do_IRQ+0x38/0x89
[<c1002ea9>] ? common_interrupt+0x29/0x30
[<c1180855>] ? strchr+0x15/0x1a
[<f8b8e0f4>] ? cwnic_http_pkt_get_version+0x1a/0x59 [e1000e]
[<f8b8e9f7>] ? cwnic_tcp_portal_reply+0x630/0xb2e [e1000e]
[<c1180275>] ? vsnprintf+0x280/0x2c5
[<c1180085>] ? vsnprintf+0x90/0x2c5
[<c11802d7>] ? sprintf+0x1d/0x20
[<f8b92680>] ? cwnic_snprint_url+0x58/0x5f [e1000e]
[<f8b92a04>] ? cwnic_url_match_sub+0xae/0xec [e1000e]
[<f8b92b68>] ? cwnic_url_match+0x126/0x212 [e1000e]
[<c1006a2a>] ? nommu_map_page+0x3a/0x52
[<c1517ce8>] ? skb_dma_map+0x64/0x1a8
[<c1180275>] ? vsnprintf+0x280/0x2c5
[<c1180085>] ? vsnprintf+0x90/0x2c5
[<c11802d7>] ? sprintf+0x1d/0x20
[<f8b92680>] ? cwnic_snprint_url+0x58/0x5f [e1000e]
[<f8b905fe>] ? cwnic_encap+0x502/0x72b [e1000e]
[<f8b8f152>] ? cwnic_portal_deal+0xf9/0x10b [e1000e]
[<c104ad0d>] ? tick_handle_periodic+0x14/0x5b
[<c1047f0c>] ? update_wall_time+0x6e7/0x6fd
[<c1047f0c>] ? update_wall_time+0x6e7/0x6fd
[<f8b8c0d2>] ? cwnic_hashtab_search+0x118/0x12c [e1000e]
[<f8b8c0d2>] ? cwnic_hashtab_search+0x118/0x12c [e1000e]
[<c102b7e4>] ? scheduler_tick+0xf1/0x135
[<f8b8c07a>] ? cwnic_hashtab_search+0xc0/0x12c [e1000e]
[<f8b8d6dc>] ? cwnic_hashtab_check+0x59/0x64 [e1000e]
[<f8b91c67>] ? cwnic_decap_8023+0xa3f/0xc48 [e1000e]
[<f8b8c10f>] ? cwnic_find_sta_by_mac+0x10/0x12 [e1000e]
[<f8b8c10f>] ? cwnic_find_sta_by_mac+0x10/0x12 [e1000e]
[<c1047f0c>] ? update_wall_time+0x6e7/0x6fd
[<c1006a2a>] ? nommu_map_page+0x3a/0x52
[<c1517ce8>] ? skb_dma_map+0x64/0x1a8
[<f8ba1237>] ? e1000_maybe_stop_tx+0x18/0x5b [e1000e]
[<f8ba287e>] ? e1000_xmit_frame_origin+0x7cf/0x819 [e1000e]
[<f8b924a3>] ? cwnic_decap+0x3fb/0x4a8 [e1000e]
[<c151a158>] ? dev_hard_start_xmit+0x23b/0x2e7
[<c15475ac>] ? nf_ct_invert_tuple+0x48/0x54
[<c154903e>] ? nf_conntrack_tuple_taken+0xc6/0x100
[<c1006a2a>] ? nommu_map_page+0x3a/0x52
[<c1517ce8>] ? skb_dma_map+0x64/0x1a8
[<f8b8d83a>] ? cwnic_find_ap_by_mac_set+0x153/0x166 [e1000e]
[<f8ba1237>] ? e1000_maybe_stop_tx+0x18/0x5b [e1000e]
[<f8ba287e>] ? e1000_xmit_frame_origin+0x7cf/0x819 [e1000e]
[<f8b8be2f>] ? cwnic_input+0x6ea/0x6ff [e1000e]
[<c15289b9>] ? sch_direct_xmit+0x6c/0x105
[<c151c8ff>] ? dev_queue_xmit+0x325/0x35e
[<c15ca290>] ? vlan_dev_hwaccel_hard_start_xmit+0x55/0x70
[<c151a158>] ? dev_hard_start_xmit+0x23b/0x2e7
[<c15198ed>] ? netif_receive_skb+0x34f/0x371
[<c15c4f66>] ? br_handle_frame_finish+0xd4/0x101
[<c15c8295>] ? br_nf_pre_routing_finish+0x24f/0x268
[<c15c8046>] ? br_nf_pre_routing_finish+0x0/0x268
[<c15c8046>] ? br_nf_pre_routing_finish+0x0/0x268
[<c15467d3>] ? nf_hook_slow+0x41/0x99
[<c15c8046>] ? br_nf_pre_routing_finish+0x0/0x268
[<c15c8faf>] ? br_nf_pre_routing+0x5c7/0x5e0
[<c1546610>] ? nf_iterate+0x30/0x61
[<c15c4e92>] ? br_handle_frame_finish+0x0/0x101
[<c15c4e92>] ? br_handle_frame_finish+0x0/0x101
[<c15467d3>] ? nf_hook_slow+0x41/0x99
[<c15c4e92>] ? br_handle_frame_finish+0x0/0x101
[<c15c4e92>] ? br_handle_frame_finish+0x0/0x101
[<f8ba201c>] ? e1000_receive_skb+0x33/0xbc [e1000e]
[<f8ba5653>] ? e1000_clean_rx_irq+0x26a/0x309 [e1000e]
[<f8ba4481>] ? e1000_clean+0x60/0x1f9 [e1000e]
[<c151be0d>] ? net_rx_action+0x66/0x113
[<c1033b34>] ? __do_softirq+0xc5/0x186
[<c1033a6f>] ? __do_softirq+0x0/0x186
<IRQ> [<c1003c51>] ? do_IRQ+0x78/0x89
[<c1002ea9>] ? common_interrupt+0x29/0x30
[<c11d6237>] ? acpi_idle_enter_simple+0x119/0x14a
[<c14f692e>] ? cpuidle_idle_call+0x62/0xb8
[<c1001a2c>] ? cpu_idle+0x37/0x4b
[<c19a07d4>] ? start_kernel+0x2ad/0x2b0
------------[ cut here ]------------
解决方案1:
请把你的那段中断处理代码贴上来
解决方案2:只能开大栈区,否则就要优化你的代码,特别是如果有递归调用,是非常容易栈溢出的