Sorry about this, this was a brain-freeze case. I was made to realize that it is the wait_at_barrier field initialized to 1 and not workers_at_barrier Once again sorry for spamming on this one. Everything's fine here.
Regards -Prashant On Tue, Nov 13, 2018 at 5:50 PM Prashant Upadhyaya <praupadhy...@gmail.com> wrote: > > Hi, > > I am on VPP 18.01. > > I see the following while loop in the > vlib_worker_thread_barrier_sync_int function > (src/vlib/threads.c) > while (*vlib_worker_threads->workers_at_barrier != count) > { > if ((now = vlib_time_now (vm)) > deadline) > { > fformat (stderr, "%s: worker thread deadlock\n", __FUNCTION__); > os_panic (); > } > } > Suppose I have 4 workers (and 1 main thread), so the value of count will be 4. > Each worker bumps up the workers_at_barrier by 1. > So if the while loop in its sampling misses seeing the value bumping > by the third worker, and the 4th worker bumps up the value, then > workers_at_barrier will become 5 and the while will never break > eventually missing the deadline. > > I am seeing this happening occasionally on some of my setups. > > Do you think it is safe to change the while like this instead ? > > while (*vlib_worker_threads->workers_at_barrier <= count) > > Regards > -Prashant > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > > View/Reply Online (#11218): https://lists.fd.io/g/vpp-dev/message/11218 > Mute This Topic: https://lists.fd.io/mt/28122014/1005467 > Group Owner: vpp-dev+ow...@lists.fd.io > Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [praupadhy...@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=-
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11221): https://lists.fd.io/g/vpp-dev/message/11221 Mute This Topic: https://lists.fd.io/mt/28122014/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-