The line:
get_arr.val = 0;
Is corrupting the get_arr union. Causing get_arr.array to have an illegal value. On a 32bit machine, this cause the array pointer to be NULL and the later free silently fails. On a 64bit big endian machine, this causes free to get a completely bogus pointer.
The set needs to use a different union than get_arr.
Make the set use a differnet union
Logged In: YES
user_id=1761305
Originator: YES
Here is a patch
File Added: ltp-fix-semop01-get_arr.patch
Logged In: YES
user_id=1737361
Originator: NO
Your Patch is accepted and Bug Fixed.