Here are the valgrind test results with Samuel's syscall patch applied to Valgrind, and the latest BRLTTY revision with the corrected Baum driver.
I allowed the Brailliant 40 display to power down during this test. ==16074== Memcheck, a memory error detector. ==16074== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==16074== Using LibVEX rev 1732, a library for dynamic binary translation. ==16074== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==16074== Using valgrind-3.2.3, a dynamic binary instrumentation framework. ==16074== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==16074== For more details, rerun with: -v ==16074== BRLTTY 3.8dev [http://mielke.cc/brltty/] ==16075== ==16075== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 1) ==16075== malloc/free: in use at exit: 194 bytes in 19 blocks. ==16075== malloc/free: 78 allocs, 59 frees, 16,886 bytes allocated. ==16075== For counts of detected errors, rerun with: -v ==16075== searching for pointers to 19 not-freed blocks. ==16075== checked 117,312 bytes. ==16075== ==16075== 71 bytes in 6 blocks are definitely lost in loss record 3 of 4 ==16075== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16075== by 0x52B9731: strdup (in /lib/libc-2.5.so) ==16075== by 0x4181F8: strdupWrapper (misc.c:285) ==16075== by 0x415EAB: ensureSetting (options.c:118) ==16075== by 0x417250: setDefaultOptions (options.c:504) ==16075== by 0x417AB6: processOptions (options.c:729) ==16075== by 0x414F12: startup (config.c:1945) ==16075== by 0x40C45F: main (main.c:1101) ==16075== ==16075== LEAK SUMMARY: ==16075== definitely lost: 71 bytes in 6 blocks. ==16075== possibly lost: 0 bytes in 0 blocks. ==16075== still reachable: 123 bytes in 13 blocks. ==16075== suppressed: 0 bytes in 0 blocks. ==16075== Reachable blocks (those to which a pointer was found) are not shown. ==16075== To see them, rerun with: --leak-check=full --show-reachable=yes ==16074== ==16074== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 1) ==16074== malloc/free: in use at exit: 194 bytes in 19 blocks. ==16074== malloc/free: 78 allocs, 59 frees, 16,886 bytes allocated. ==16074== For counts of detected errors, rerun with: -v ==16074== searching for pointers to 19 not-freed blocks. ==16074== checked 116,272 bytes. ==16074== ==16074== 71 bytes in 6 blocks are definitely lost in loss record 3 of 4 ==16074== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16074== by 0x52B9731: strdup (in /lib/libc-2.5.so) ==16074== by 0x4181F8: strdupWrapper (misc.c:285) ==16074== by 0x415EAB: ensureSetting (options.c:118) ==16074== by 0x417250: setDefaultOptions (options.c:504) ==16074== by 0x417AB6: processOptions (options.c:729) ==16074== by 0x414F12: startup (config.c:1945) ==16074== by 0x40C45F: main (main.c:1101) ==16074== ==16074== LEAK SUMMARY: ==16074== definitely lost: 71 bytes in 6 blocks. ==16074== possibly lost: 0 bytes in 0 blocks. ==16074== still reachable: 123 bytes in 13 blocks. ==16074== suppressed: 0 bytes in 0 blocks. ==16074== Reachable blocks (those to which a pointer was found) are not shown. ==16074== To see them, rerun with: --leak-check=full --show-reachable=yes jpc:~# ==16076== Invalid read of size 8 ==16076== at 0x40151E1: (within /lib/ld-2.5.so) ==16076== by 0x4011651: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== by 0x42B7E1: loadDriver (drivers.c:105) ==16076== by 0x42D796: loadScreenDriver (scr_real.c:53) ==16076== by 0x42BCA9: initializeAllScreens (scr.c:51) ==16076== Address 0x40954C0 is 24 bytes inside a block of size 28 alloc'd ==16076== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16076== by 0x4185F7: makePath (misc.c:383) ==16076== by 0x42B7C9: loadDriver (drivers.c:104) ==16076== by 0x42D796: loadScreenDriver (scr_real.c:53) ==16076== by 0x42BCA9: initializeAllScreens (scr.c:51) ==16076== by 0x415799: startup (config.c:2232) ==16076== by 0x40C45F: main (main.c:1101) ==16076== ==16076== Invalid read of size 8 ==16076== at 0x40151E1: (within /lib/ld-2.5.so) ==16076== by 0x400776A: (within /lib/ld-2.5.so) ==16076== by 0x400842E: (within /lib/ld-2.5.so) ==16076== by 0x401170C: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== by 0x42B7E1: loadDriver (drivers.c:105) ==16076== Address 0x40954C0 is 24 bytes inside a block of size 28 alloc'd ==16076== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16076== by 0x4185F7: makePath (misc.c:383) ==16076== by 0x42B7C9: loadDriver (drivers.c:104) ==16076== by 0x42D796: loadScreenDriver (scr_real.c:53) ==16076== by 0x42BCA9: initializeAllScreens (scr.c:51) ==16076== by 0x415799: startup (config.c:2232) ==16076== by 0x40C45F: main (main.c:1101) ==16076== ==16076== Invalid read of size 8 ==16076== at 0x401533E: (within /lib/ld-2.5.so) ==16076== by 0x4007777: (within /lib/ld-2.5.so) ==16076== by 0x400842E: (within /lib/ld-2.5.so) ==16076== by 0x401170C: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== by 0x42B7E1: loadDriver (drivers.c:105) ==16076== Address 0x40954C0 is 24 bytes inside a block of size 28 alloc'd ==16076== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16076== by 0x4185F7: makePath (misc.c:383) ==16076== by 0x42B7C9: loadDriver (drivers.c:104) ==16076== by 0x42D796: loadScreenDriver (scr_real.c:53) ==16076== by 0x42BCA9: initializeAllScreens (scr.c:51) ==16076== by 0x415799: startup (config.c:2232) ==16076== by 0x40C45F: main (main.c:1101) ==16076== ==16076== Invalid read of size 8 ==16076== at 0x401533E: (within /lib/ld-2.5.so) ==16076== by 0x400A64E: (within /lib/ld-2.5.so) ==16076== by 0x4006194: (within /lib/ld-2.5.so) ==16076== by 0x40084DB: (within /lib/ld-2.5.so) ==16076== by 0x401170C: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== Address 0x40954C0 is 24 bytes inside a block of size 28 alloc'd ==16076== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16076== by 0x4185F7: makePath (misc.c:383) ==16076== by 0x42B7C9: loadDriver (drivers.c:104) ==16076== by 0x42D796: loadScreenDriver (scr_real.c:53) ==16076== by 0x42BCA9: initializeAllScreens (scr.c:51) ==16076== by 0x415799: startup (config.c:2232) ==16076== by 0x40C45F: main (main.c:1101) ==16076== ==16076== Invalid read of size 8 ==16076== at 0x401533E: (within /lib/ld-2.5.so) ==16076== by 0x400A835: (within /lib/ld-2.5.so) ==16076== by 0x4006194: (within /lib/ld-2.5.so) ==16076== by 0x40084DB: (within /lib/ld-2.5.so) ==16076== by 0x401170C: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== Address 0x4095560 is 24 bytes inside a block of size 28 alloc'd ==16076== at 0x4C20996: malloc (vg_replace_malloc.c:149) ==16076== by 0x4007783: (within /lib/ld-2.5.so) ==16076== by 0x400842E: (within /lib/ld-2.5.so) ==16076== by 0x401170C: (within /lib/ld-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x401116A: (within /lib/ld-2.5.so) ==16076== by 0x4E24F79: (within /lib/libdl-2.5.so) ==16076== by 0x400D795: (within /lib/ld-2.5.so) ==16076== by 0x4E254EC: (within /lib/libdl-2.5.so) ==16076== by 0x4E24EF0: dlopen (in /lib/libdl-2.5.so) ==16076== by 0x419DA7: loadSharedObject (sys_shlib_dlfcn.h:27) ==16076== by 0x42B7E1: loadDriver (drivers.c:105) ==16076== ==16076== Syscall param ioctl(VT_GETSTATE) points to uninitialised byte(s) ==16076== at 0x530BAB7: ioctl (in /lib/libc-2.5.so) ==16076== by 0x56BD5F7: controlConsole (screen.c:327) ==16076== by 0x56BE7BA: getConsoleDescription (screen.c:915) ==16076== by 0x56BE8CC: describe_LinuxScreen (screen.c:949) ==16076== by 0x42C647: describeBaseScreen (scr_base.c:118) ==16076== by 0x42BF8D: describeScreen (scr.c:151) ==16076== by 0x4099FE: getScreenAttributes (main.c:127) ==16076== by 0x40C47D: main (main.c:1109) ==16076== Address 0x7FF0006F0 is on thread 1's stack ==16076== ==16076== Syscall param ioctl(VT_GETSTATE) points to uninitialised byte(s) ==16076== at 0x530BAB7: ioctl (in /lib/libc-2.5.so) ==16076== by 0x56BD5F7: controlConsole (screen.c:327) ==16076== by 0x56BE7BA: getConsoleDescription (screen.c:915) ==16076== by 0x56BFF85: currentVirtualTerminal_LinuxScreen (screen.c:1611) ==16076== by 0x42C16E: currentVirtualTerminal (scr.c:214) ==16076== by 0x43695E: setCurrentRootTty (brlapi_server.c:2246) ==16076== by 0x436C3F: api_readCommand (brlapi_server.c:2332) ==16076== by 0x42EA3C: readBrailleCommand (brl.c:226) ==16076== by 0x40C6B0: main (main.c:1175) ==16076== Address 0x7FF000470 is on thread 1's stack ==16076== Warning: noted but unhandled ioctl 0x550B with no size/direction hints ==16076== This could cause spurious value errors to appear. ==16076== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. ==16076== Warning: noted but unhandled ioctl 0x550B with no size/direction hints ==16076== This could cause spurious value errors to appear. ==16076== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. ==16076== Warning: noted but unhandled ioctl 0x550B with no size/direction hints ==16076== This could cause spurious value errors to appear. ==16076== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. _______________________________________________ This message was sent via the BRLTTY mailing list. To post a message, send an e-mail to: [email protected] For general information, go to: http://mielke.cc/mailman/listinfo/brltty
