I don't see anything wrong in current code when ui->flags == 1. Probably ui->flags == 3 case only needs the frame.
Thanks, Piotr
On 5/28/20 10:59 PM, Daniel Lehman wrote:
Do you have code that depends on that change?
all unwind handlers i see do. but i realized i can't demonstrate it without another change to how the flags in read_unwind_info are treated (was trying to send some smaller, hopefully independent commits out of order from my working tree first...)
a simple sample that demonstrates it requires a member variable: class test { public: test(int d) : id(d) { printf("ctor %x\n", id); } ~test() { printf("dtor %x\n", id); } int id; };
try { test t(0x42); throw 1; } catch (int i) { printf("catch %d\n", i); }
the 'return FALSE' for flag 0x2 in read_unwind_info has to be commented out. but with that change and this commit for the frame, you should see "ctor 0x42" and "dtor 0x42". it crashes or outputs garbage values without the frame
thanks daniel