Most strange.
As you are a SQL man could you try this query below? This is basically what is run to populate a thread.
I have set table prefix to ‘wp_’ and you will need to replace the thread ID (XXXX) with your thread (which I now see is 2976). Am interested to see if you get the correct members showing up in the results.
SELECT wp_sfpmrecipients.thread_id, wp_sfpmmessages.user_id AS sender, mem1.display_name AS sender_display_name, wp_sfpmrecipients.user_id AS recipient, mem2.display_name AS recipient_display_name, wp_sfpmrecipients.message_id, read_status, pm_type, sent_date, attachment_id, title, message_count, thread_slug, message
FROM wp_sfpmrecipients
JOIN wp_sfpmmessages ON wp_sfpmrecipients.message_id = wp_sfpmmessages.message_id
JOIN wp_sfpmthreads ON wp_sfpmrecipients.thread_id = wp_sfpmthreads.thread_id
JOIN wp_sfmembers AS mem1 ON wp_sfpmmessages.user_id = mem1.user_id
JOIN wp_sfmembers AS mem2 ON wp_sfpmrecipients.user_id = mem2.user_id WHERE wp_sfpmrecipients.thread_id = XXXX
ORDER BY sent_date ASC