Project

Profile

Help

Bug #6226

closed

Race condition initialising UnicodeBlocks class

Added by at055612 at055612 6 months ago. Updated 5 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Multithreading
Sprint/Milestone:
-
Start date:
2023-10-18
Due date:
% Done:

0%

Estimated time:
Legacy ID:
Applies to branch:
10, 11, 12, trunk
Fix Committed on Branch:
11, 12, trunk
Fixed in Maintenance Release:
Platforms:
.NET, Java

Description

Seen in v9.9.1-8 but the code is the same in v12.3

There is a potential race condition when readBlocks() is called in net.sf.saxon.regex.UnicodeBlocks. Because the blocks instance variable is set at the start of readBlocks(), there is the potential for another thread to read it and find it populated, partially populated or empty depending on timing.

I suggest changing it to use the Initialization-on-demand holder idiom in a similar way to issue https://saxonica.plan.io/issues/6225

Actions #1

Updated by Michael Kay 6 months ago

Categories.java could also do with the same treatment.

Actions #2

Updated by Michael Kay 6 months ago

  • Status changed from New to Resolved
  • Assignee set to Michael Kay
  • Applies to branch trunk added
  • Applies to branch deleted (9.9)
  • Fix Committed on Branch 11, 12, trunk added
  • Platforms .NET, Java added

Resolved as suggested.

Actions #3

Updated by O'Neil Delpratt 5 months ago

  • Fixed in Maintenance Release 12.4 added

Bug fix applied in the Saxon 12.4 Maintenance release. Leaving it marked as 'Resolved' until fix applied on Saxon 11.

Please register to edit this issue

Also available in: Atom PDF