Hmm, when I tested this it worked without problem; I added this theme:
"test" -ubt true -lbtf "~~/themes/textures/EdSolid-cream.png" -dbtf
"~~/themes/textures/EdSolid-blue.png" -lbtm 1 -dbtm 1 -ub false -upf
false -pid "~~/themes/Mnemonic-S" -trueColors true -hsc #FFFF00 -phc #ff0000
The backtrace shows that the crash happened during an snprintf called
from LoadTheme (in backend.c). Unfortunately there are many snprintfs
called from LoadTheme, so to zoom in on the problem we would have to
figure out which one it is that causes the trouble, and what it was
expected to print. Can you put a printf statement after every snprintf
there like
printf("A\n"),fflush(stdout);
(and similar "B\n", "C\n" etc) to see what the last one is that was
printed in the terminal before the crash?
Op 5/11/2016 om 1:36 AM schreef Joshua Pettus:
Thanks Harm,
I gave it a try, and now loads correctly. Thanks. But now when I save
a new theme (testing out the new DataDir to ~~/ translation) XBoard
now crashes :
XBoard: line 69: 889 Segmentation fault: 11
I did a backtrace but I bet it's the translation that's giving us
trouble:
(lldb) thread backtrace all
* thread #1: tid = 0xa99f, 0x00007fff980d4152 libsystem_c.dylib`strlen
+ 18, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
(code=1, address=0x11cfe0)
* frame #0: 0x00007fff980d4152 libsystem_c.dylib`strlen + 18
frame #1: 0x00007fff98119a54 libsystem_c.dylib`__vfprintf + 5713
frame #2: 0x00007fff981426c9 libsystem_c.dylib`__v2printf + 669
frame #3: 0x00007fff98126915 libsystem_c.dylib`_vsnprintf + 596
frame #4: 0x00007fff981269ca libsystem_c.dylib`vsnprintf + 80
frame #5: 0x00007fff98157d08 libsystem_c.dylib`__snprintf_chk + 128
frame #6: 0x00000001000591d6 xboard-bin`LoadTheme + 401
frame #7: 0x0000000100081d3d xboard-bin`BoardOptionsOK + 156
frame #8: 0x0000000100080745 xboard-bin`GenericReadout + 2575
frame #9: 0x00000001000a1b81 xboard-bin`GenericPopDown + 174
frame #10: 0x0000000100bdd9a5
libgobject-2.0.0.dylib`g_cclosure_marshal_VOID__INTv + 110
frame #11: 0x0000000100bdca15
libgobject-2.0.0.dylib`_g_closure_invoke_va + 433
frame #12: 0x0000000100bf04c4
libgobject-2.0.0.dylib`g_signal_emit_valist + 1201
frame #13: 0x0000000100bf13a3 libgobject-2.0.0.dylib`g_signal_emit
+ 148
frame #14: 0x0000000100bdca15
libgobject-2.0.0.dylib`_g_closure_invoke_va + 433
frame #15: 0x0000000100bf04c4
libgobject-2.0.0.dylib`g_signal_emit_valist + 1201
frame #16: 0x0000000100bf13a3 libgobject-2.0.0.dylib`g_signal_emit
+ 148
frame #17: 0x000000010037f5a8
libgtk-quartz-2.0.0.dylib`gtk_real_button_released + 52
frame #18: 0x0000000100bdca15
libgobject-2.0.0.dylib`_g_closure_invoke_va + 433
frame #19: 0x0000000100bf04c4
libgobject-2.0.0.dylib`g_signal_emit_valist + 1201
frame #20: 0x0000000100bf13a3 libgobject-2.0.0.dylib`g_signal_emit
+ 148
frame #21: 0x000000010037cd7a
libgtk-quartz-2.0.0.dylib`gtk_button_button_release + 15
frame #22: 0x000000010041d67c
libgtk-quartz-2.0.0.dylib`_gtk_marshal_BOOLEAN__BOXED + 169
frame #23: 0x0000000100bdcc5e
libgobject-2.0.0.dylib`g_closure_invoke + 399
frame #24: 0x0000000100bef6e1
libgobject-2.0.0.dylib`signal_emit_unlocked_R + 4564
frame #25: 0x0000000100bf0f8a
libgobject-2.0.0.dylib`g_signal_emit_valist + 3959
frame #26: 0x0000000100bf13a3 libgobject-2.0.0.dylib`g_signal_emit
+ 148
frame #27: 0x0000000100516670
libgtk-quartz-2.0.0.dylib`gtk_widget_event_internal + 711
frame #28: 0x0000000100416d71
libgtk-quartz-2.0.0.dylib`gtk_propagate_event + 300
frame #29: 0x0000000100417d37
libgtk-quartz-2.0.0.dylib`gtk_main_do_event + 1214
frame #30: 0x00000001007ea0f2
libgdk-quartz-2.0.0.dylib`gdk_event_dispatch + 87
frame #31: 0x0000000100c5d3fe
libglib-2.0.0.dylib`g_main_context_dispatch + 346
frame #32: 0x0000000100c5fc2f
libglib-2.0.0.dylib`g_main_context_iterate + 385
frame #33: 0x0000000100c5fe01
libglib-2.0.0.dylib`g_main_context_iteration + 65
frame #34: 0x0000000100417eb2
libgtk-quartz-2.0.0.dylib`gtk_main_iteration + 33
frame #35: 0x000000010009c9cf xboard-bin`main + 5481
frame #36: 0x0000000100007780 xboard-bin`start + 52
thread #3: tid = 0xa9a3, 0x00007fff947a5efa
libsystem_kernel.dylib`kevent_qos + 10, queue =
'com.apple.libdispatch-manager'
frame #0: 0x00007fff947a5efa libsystem_kernel.dylib`kevent_qos + 10
frame #1: 0x00007fff9c6d9165
libdispatch.dylib`_dispatch_mgr_invoke + 216
frame #2: 0x00007fff9c6d8dcd
libdispatch.dylib`_dispatch_mgr_thread + 52
thread #6: tid = 0xa9a4, 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #0: 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff8a8ed578
libsystem_pthread.dylib`_pthread_wqthread + 1283
frame #2: 0x00007fff8a8eb341
libsystem_pthread.dylib`start_wqthread + 13
thread #7: tid = 0xaa9d, 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #0: 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff8a8ed578
libsystem_pthread.dylib`_pthread_wqthread + 1283
frame #2: 0x00007fff8a8eb341
libsystem_pthread.dylib`start_wqthread + 13
thread #8: tid = 0xaa9e, 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #0: 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff8a8ed578
libsystem_pthread.dylib`_pthread_wqthread + 1283
frame #2: 0x00007fff8a8eb341
libsystem_pthread.dylib`start_wqthread + 13
thread #9: tid = 0xaaa0, 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #0: 0x00007fff947a55e2
libsystem_kernel.dylib`__workq_kernreturn + 10
frame #1: 0x00007fff8a8ed578
libsystem_pthread.dylib`_pthread_wqthread + 1283
frame #2: 0x00007fff8a8eb341
libsystem_pthread.dylib`start_wqthread + 13
thread #10: tid = 0xaace, 0x00007fff9479ef72
libsystem_kernel.dylib`mach_msg_trap + 10, name =
'com.apple.NSEventThread'
frame #0: 0x00007fff9479ef72 libsystem_kernel.dylib`mach_msg_trap
+ 10
frame #1: 0x00007fff9479e3b3 libsystem_kernel.dylib`mach_msg + 55
frame #2: 0x00007fff94d671c4
CoreFoundation`__CFRunLoopServiceMachPort + 212
frame #3: 0x00007fff94d6668c CoreFoundation`__CFRunLoopRun + 1356
frame #4: 0x00007fff94d65ed8 CoreFoundation`CFRunLoopRunSpecific +
296
frame #5: 0x00007fff96d17e99 AppKit`_NSEventThread + 149
frame #6: 0x00007fff8a8ed99d libsystem_pthread.dylib`_pthread_body
+ 131
frame #7: 0x00007fff8a8ed91a
libsystem_pthread.dylib`_pthread_start + 168
frame #8: 0x00007fff8a8eb351 libsystem_pthread.dylib`thread_start
+ 13
thread #11: tid = 0xaad4, 0x00007fff947a507a
libsystem_kernel.dylib`__select + 10
frame #0: 0x00007fff947a507a libsystem_kernel.dylib`__select + 10
frame #1: 0x0000000100c67f59 libglib-2.0.0.dylib`g_poll + 325
frame #2: 0x00000001007eac38
libgdk-quartz-2.0.0.dylib`select_thread_func + 300
frame #3: 0x00007fff8a8ed99d libsystem_pthread.dylib`_pthread_body
+ 131
frame #4: 0x00007fff8a8ed91a
libsystem_pthread.dylib`_pthread_start + 168
frame #5: 0x00007fff8a8eb351 libsystem_pthread.dylib`thread_start
+ 13
Josh
On 5/10/16 3:31 AM, H.G. Muller wrote:
This looks like the line simply gets clipped because of insufficient
buffer size. And on trying to activate it, it might be clipped even
shorter than on writing. Encountering an invalid option name still is
a fatal error when the options were not coming from a settings file
(where recovery is possible by skipping to the next line, and where
it was pretty annoying that after running a newer test version of
WinBoard, the old version would crash because of the new options it
did not knowthat were stored in the settings file). The "logout" is
now always sent to an ICS after a fatal error, to prevent the ICS
from starting a new game when XBoard is waiting for user confirmation
of the fatal-error popup before actually exiting (which you would
then forfeit on time).
I will check which buffers the theme definition passes through, and
enlarge those. It would of course also be helpful if at some point
(e.g. creating the line in the -themeNames option in LoadTheme())
XBoard would recognize the long path names obtained from the file
chooser as being in its DATADIR (which here is
"/Applications/Chess/Xboard/XBoard.app/Contents/Resources/share/xboard"?),
and replace it by ~~. This would of course not help against general
use of long path names, but it would surely make the theme lines more
readable in the typical case:
"Marble(Blue)" -ubt true -lbtf
"~~/themes/textures/Transparent/stone-marble2-texture.png" -dbtf
"~~/themes/textures/Transparent/stone-marble1-texture.png" -lbtm 1
-dbtm 1 -lsc #cbdce1 -dsc #1b6883 -ub false -upf false -pid
"~~/themes/Habsburg" -trueColors false -wpc #ededed -bpc #000000 -hsc
#fff826 -phc #FF0000