This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] pthread_cleanup_push macro generates warning when -Wclobbered is set


On 11/21/2017 06:35 AM, Paul Eggert wrote:
Joseph Myers wrote:
the warning
seems justified to me, in that the second return of __sigsetjmp might
result in undefined behavior from variables being accessed after the
containing block has exited, which is what the warning is about.

I'm with Florian on this. I don't see the warning as being justified.

Basically the warning is saying "Watch out! Since these variables are not declared to be volatile, they might be trashed by longjmp!" You can work around such problems by declaring the variables to be volatile.

Here, though, declaring the variables to be volatile would not fix the problem that you describe. Because a longjmp makes them go out of scope, they become uninitialized regardless of whether they're declared to be volatile. So the warning is not appropriate here.

I think the standard assumes that storage for all local variables is allocated when the function is entered (or when a scope is entered with which contains a variable of variably modified type). This is certainly an odd requirement.

Thanks,
Florian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]