Wind River Support Network

HomeDefectsLIN6-4536
Not to be fixed

LIN6-4536 : Compiler generating incorrect code for access to bitfields in MIPS64

Created: May 16, 2013    Updated: Apr 19, 2018
Resolved Date: Apr 17, 2018
Previous ID: LIN4-19845
Found In Version: 6.0
Severity: Severe
Applicable for: Wind River Linux 6
Component/s: Userspace

Description

On Cavium MIPS targets where the rootfs is built as 64-bit the customer has seen occasional aborts in named.

It is very rare, but analysis suggests that the problem is caused by the code generated to access a bitfield within a structure. It seems that accessing this bitfield is being done using a 64-bit read/write even though the bitfield itself is only 32-bits. This is causing corruption in the field immediately following the bitfield, which is a variable which should be accessed atomically.

Steps to Reproduce

The customer says the problem exists in all Cavium BSPs. They use a standard kernel and a glibc_cgl rootfs built in 64-bit mode (they swap the CPU templates in the BSP include file).

They then do this:

What I did was to run simultaneously eight copies of the script
below in parallel on two distributed nodes. This triggers the
crash somewhat reliably multiple times per hour. It happens both
on the distributed nodes and the management node.

#!/bin/sh
while true; do
nslookup -type=A PM9
nslookup -type=AAAA PM9
done

and this results in aborts.
Live chat
Online