While testing various AMQP session size limitations on the Qpid dispatch router I was able to cause a proton-c client to pin the CPU at 100% while in pn_buffer_rotate().
This appears to be caused by lowering the incoming session window to a point where session flow control activates. In the case of my reproducer I'm setting the window size to approx 600 16K frames ~9.8MB. The client is sending ~1MB messages with a credit window of 250.
See the attached flamegraphs of the sending client:
First - this is baseline, no session limit (default provided by proton):
This flamegraph shows the client's behavior with a session limit of 9.8MB:
See comment for reproducer.