XCode crashes during iOS app validation

I'm trying to get my iOS app ready for distribution, but after running Product->Archive and clicking Validate App, XCode does a few steps of validation and then crashes without finishing.

Here's the top of the crash log, I can reproduce easily and get the full report if needed.

This is a blocker for me and I really need a solution.

Translated Report (Full Report Below)
-------------------------------------

Process:               Xcode [93086]
Path:                  /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier:            com.apple.dt.Xcode
Version:               15.3 (22618)
Build Info:            IDEApplication-22618000000000000~2 (15E204a)
App Item ID:           497799835
App External ID:       863955376
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2024-05-07 09:20:28.9493 +0200
OS Version:            macOS 14.4.1 (23E224)
Report Version:        12
Anonymous UUID:        3BF4943C-9199-C215-F9AB-59223913BAC9

Sleep/Wake UUID:       0AFCFDE1-E734-4B4D-88F6-72BC777F81CB

Time Awake Since Boot: 650000 seconds
Time Since Wake:       2935 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: archive info plist lock

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000

Termination Reason:    Namespace SIGNAL, Code 6 Abort trap: 6
Terminating Process:   Xcode [93086]

Application Specific Information:
com.apple.main-thread
abort() called


Application Specific Signatures:
NSInvalidArgumentException

Application Specific Backtrace 0:
0   CoreFoundation                      0x000000019d59eccc __exceptionPreprocess + 176
1   DVTFoundation                       0x00000001044dcbc4 DVTFailureHintExceptionPreprocessor + 388
2   libobjc.A.dylib                     0x000000019d086788 objc_exception_throw + 60
3   CoreFoundation                      0x000000019d4b67d0 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 728
4   CoreFoundation                      0x000000019d4b64cc +[NSDictionary dictionaryWithObjects:forKeys:count:] + 52
5   IDEFoundation                       0x0000000109a58a34 -[IDEArchiveDistributionRecord dictionaryRepresentation] + 296
6   IDEFoundation                       0x0000000109a3a21c __31-[IDEArchive setDistributions:]_block_invoke + 16
7   DVTFoundation                       0x00000001044d4700 -[NSArray(DVTFoundationClassAdditions) dvt_arrayByApplyingBlock:] + 224
8   IDEFoundation                       0x0000000109a3a1ac -[IDEArchive setDistributions:] + 84
9   Foundation                          0x000000019e624370 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:maybeNewValuesDict:usingBlock:] + 608
10  Foundation                          0x000000019e64da24 -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 64
11  Foundation                          0x000000019e667688 _NSSetObjectValueAndNotify + 284
12  IDEFoundation                       0x0000000109a39fa4 __36-[IDEArchive addDistribution:error:]_block_invoke + 156
13  libdispatch.dylib                   0x000000019d29a3e8 _dispatch_client_callout + 20
14  libdispatch.dylib                   0x000000019d2a98d8 _dispatch_lane_barrier_sync_invoke_and_complete + 56
15  DVTFoundation                       0x000000010452127c DVTDispatchBarrierSync + 148
16  DVTFoundation                       0x00000001044fd024 -[DVTDispatchLock performLockedBlock:] + 60
17  IDEFoundation                       0x0000000109a39dcc -[IDEArchive addDistribution:error:] + 200
18  IDEFoundation                       0x00000001099e05f4 __41-[IDEDistributionValidationStep validate]_block_invoke + 116
19  DVTFoundation                       0x0000000104520598 __DVT_CALLING_CLIENT_BLOCK__ + 16
20  DVTFoundation                       0x0000000104520d70 __DVTSyncPerformBlock_block_invoke + 68
21  CoreFoundation                      0x000000019d529a48 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 28
22  CoreFoundation                      0x000000019d52995c __CFRunLoopDoBlocks + 356
23  CoreFoundation                      0x000000019d528dec __CFRunLoopRun + 2440
24  CoreFoundation                      0x000000019d527e0c CFRunLoopRunSpecific + 608
25  HIToolbox                           0x00000001a7cc3000 RunC

Replies

After much experimentation and googling, I resolved this by changing the CFBundleShortVersionString and CFBundleVersion fields in the plist to only use numbers, and no letters.

Any letter or dash or other non-number-or-dot character in any of these two fields crashes XCode during validation.