[Accessibility] OS X QString::fromNSString

Jeremy Whiting jpwhiting at kde.org
Tue Mar 3 03:16:12 CET 2015


Hello,

Inside QtSpeech in the mac backend we have a method that worked fine with
Qt 5.4.0. I've recently upgraded to Qt 5.4.1 and when trying to run the
example widget I'm getting an exception thrown when we call
QString::fromNSString on the age string we get from the NSSpeechSynthesizer
voice's attributes NSDictionary. The backtrace in lldb looks like this:

bowser:qtspeech jeremy$ lldb
examples/widgets/hello_speak/hello_speak.app/Contents/MacOS/hello_speak

(lldb) target create
"examples/widgets/hello_speak/hello_speak.app/Contents/MacOS/hello_speak"

Current executable set to
'examples/widgets/hello_speak/hello_speak.app/Contents/MacOS/hello_speak'
(x86_64).

(lldb) r

Process 477 launched:
'/Users/jeremy/devel/kde/src/qtspeech/examples/widgets/hello_speak/hello_speak.app/Contents/MacOS/hello_speak'
(x86_64)

Setting voice name to  "Agnes"

gender is  "VoiceGenderFemale"

age is  0x2337

2015-03-02 19:08:43.649 hello_speak[477:8289] -[__NSCFNumber length]:
unrecognized selector sent to instance 0x2337

2015-03-02 19:08:43.649 hello_speak[477:8289] An uncaught exception was
raised

2015-03-02 19:08:43.650 hello_speak[477:8289] -[__NSCFNumber length]:
unrecognized selector sent to instance 0x2337

2015-03-02 19:08:43.650 hello_speak[477:8289] (

0   CoreFoundation                      0x00007fff92a7266c
__exceptionPreprocess + 172

1   libobjc.A.dylib                     0x00007fff93e6276e
objc_exception_throw + 43

2   CoreFoundation                      0x00007fff92a756dd
-[NSObject(NSObject) doesNotRecognizeSelector:] + 205

3   CoreFoundation                      0x00007fff929bcaa4 ___forwarding___
+ 1028

4   CoreFoundation                      0x00007fff929bc618
_CF_forwarding_prep_0 + 120

5   QtCore                              0x000000010002742b
_ZN7QString12fromNSStringEPK8NSString + 59

6   QtTextToSpeech                      0x0000000100013f3e
_ZNK23QTextToSpeechPrivateMac15voiceForNSVoiceEP8NSString + 1038

7   QtTextToSpeech                      0x000000010001489b
_ZNK23QTextToSpeechPrivateMac15availableVoicesEv + 219

8   QtTextToSpeech                      0x00000001000155a3
_ZNK13QTextToSpeech15availableVoicesEv + 19

9   hello_speak                         0x0000000100004590
_ZN10MainWindow13localeChangedERK7QLocale + 176

10  hello_speak                         0x0000000100003dc7
_ZN10MainWindowC2EP7QWidget + 935

11  hello_speak                         0x000000010000394e main + 62

12  hello_speak                         0x0000000100003904 start + 52

13  ???                                 0x0000000000000001 0x0 + 1

)

2015-03-02 19:08:43.650 hello_speak[477:8289] *** Terminating app due to
uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber
length]: unrecognized selector sent to instance 0x2337'

*** First throw call stack:

(

0   CoreFoundation                      0x00007fff92a7266c
__exceptionPreprocess + 172

1   libobjc.A.dylib                     0x00007fff93e6276e
objc_exception_throw + 43

2   CoreFoundation                      0x00007fff92a756dd
-[NSObject(NSObject) doesNotRecognizeSelector:] + 205

3   CoreFoundation                      0x00007fff929bcaa4 ___forwarding___
+ 1028

4   CoreFoundation                      0x00007fff929bc618
_CF_forwarding_prep_0 + 120

5   QtCore                              0x000000010002742b
_ZN7QString12fromNSStringEPK8NSString + 59

6   QtTextToSpeech                      0x0000000100013f3e
_ZNK23QTextToSpeechPrivateMac15voiceForNSVoiceEP8NSString + 1038

7   QtTextToSpeech                      0x000000010001489b
_ZNK23QTextToSpeechPrivateMac15availableVoicesEv + 219

8   QtTextToSpeech                      0x00000001000155a3
_ZNK13QTextToSpeech15availableVoicesEv + 19

9   hello_speak                         0x0000000100004590
_ZN10MainWindow13localeChangedERK7QLocale + 176

10  hello_speak                         0x0000000100003dc7
_ZN10MainWindowC2EP7QWidget + 935

11  hello_speak                         0x000000010000394e main + 62

12  hello_speak                         0x0000000100003904 start + 52

13  ???                                 0x0000000000000001 0x0 + 1

)

libc++abi.dylib: terminating with uncaught exception of type NSException

Process 477 stopped

* thread #1: tid = 0x2061, 0x00007fff94542286
libsystem_kernel.dylib`__pthread_kill + 10, queue =
'com.apple.main-thread', stop reason = signal SIGABRT

    frame #0: 0x00007fff94542286 libsystem_kernel.dylib`__pthread_kill + 10

libsystem_kernel.dylib`__pthread_kill + 10:

-> 0x7fff94542286:  jae    0x7fff94542290            ; __pthread_kill + 20

   0x7fff94542288:  movq   %rax, %rdi

   0x7fff9454228b:  jmp    0x7fff9453dc53            ; cerror_nocancel

   0x7fff94542290:  retq

(lldb) q

Quitting LLDB will kill one or more processes. Do you really want to
proceed: [Y/n] y


Did something change within QString::fromNSString to cause it to throw an
exception in some cases? It seems we are trying to send a message to some
object that can't respond to that message.


thanks,

Jeremy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/accessibility/attachments/20150302/d6d63e24/attachment.html>


More information about the Accessibility mailing list