On 28.2.2022. 10:49, Alexandr Nedvedicky wrote:
> Hello,
>
> </snip>
>>> i will still play with sasyncd setup, maybe something comes up
>>>
>>
>> And when I thought everything is fine.. after 2 days of hitting sasyncd
>> setup I've got this panic .. will stay in ddb if some other information
>> is needed
>>
>
> I think you are hitting a different issue, which could be hiding there
> for a while.
>
> </snip>
>>
>>
>> ddb{1}> trace
>> pfsync_sendout() at pfsync_sendout+0x5a5
>> pfsync_update_state(fffffd8425b77030) at pfsync_update_state+0x15b
>> pf_test(2,3,ffff8000000c2048,ffff800022c71dd8) at pf_test+0xd61
>> ip_output(fffffd8007117b00,0,ffff800022c71f68,1,0,0,e436e0ec669ea3ac) at
>> ip_out
>> put+0x6b7
>> ip_forward(fffffd8007117b00,ffff800000099048,fffffd842d596cb8,0) at
>> ip_forward+
>> 0x2da
>> ip_input_if(ffff800022c720a8,ffff800022c720b4,4,0,ffff800000099048) at
>> ip_input
>> _if+0x353
>> ipv4_input(ffff800000099048,fffffd8007117b00) at ipv4_input+0x39
>> ether_input(ffff800000099048,fffffd8007117b00) at ether_input+0x3ad
>> if_input_process(ffff800000099048,ffff800022c72198) at if_input_process+0x92
>> ifiq_process(ffff800000098800) at ifiq_process+0x69
>> taskq_thread(ffff80000002f200) at taskq_thread+0x100
>> end trace frame: 0x0, count: -11
>
> we die here in pfsync_sendout() at linet 1871 (given I can trust gdb):
>
> 1861 /* walk the queues */
> 1862 for (q = 0; q < PFSYNC_S_COUNT; q++) {
> 1863 if (TAILQ_EMPTY(&sn.sn_qs[q]))
> 1864 continue;
> 1865
> 1866 subh = (struct pfsync_subheader *)(m->m_data + offset);
> 1867 offset += sizeof(*subh);
> 1868
> 1869 count = 0;
> 1870 while ((st = TAILQ_FIRST(&sn.sn_qs[q])) != NULL) {
> 1871 TAILQ_REMOVE(&sn.sn_qs[q], st, sync_list);
> 1872 #ifdef PFSYNC_DEBUG
> 1873 KASSERT(st->sync_state == q);
> 1874 #endif
> 1875 st->sync_state = PFSYNC_S_NONE;
> 1876 pfsync_qs[q].write(st, m->m_data + offset);
> 1877 offset += pfsync_qs[q].len;
> 1878
> 1879 pf_state_unref(st);
> 1880 count++;
> 1881 }
> 1882
>
> I need to poke to disasm more closely to figure out, which queue (`q`)
> we are processing when we die, this might get us closer to culprit.
> those queues belong to pf(4), so I see tdb/ipsec to be innocent here.
>
> I'll try to take a look later today.
>
> thanks and
> regards
> sashan
>
do you need ddb console ? if you want i can try to reproduce this panic
without isakmpd, just hitting pfsync setup?