A fix for the pthreadGC2/libwinthread issue has just been committed - fio.exe is now statically linked. -- Bruce Sent from my iPhone > On Jan 10, 2014, at 9:46 AM, "Elliott, Robert (Server Storage)" <Elliott@xxxxxx> wrote: > > 1. In addition to updating the README, I think os/windows/install.wxs needs to reference libwinpthread-1.dll instead of pthreadGC2.dll, since the wrong .dll is being copied to c:\program files\fio alongside fio.exe. I re-installed the original 2.1.4 binary, saved that file to a different directory, installed the newly built 2.1.4 with the added assert (whose installation process deletes libwinpthread-1.dll), and put that file back, and it runs. > > os/windows/install.wxs: <ComponentRef Id="pthreadGC2.dll"/> > > 2. This is where I put the assert in mutex.c: > void fio_mutex_up(struct fio_mutex *mutex) > { > assert(mutex->magic == FIO_MUTEX_MAGIC); > > pthread_mutex_lock(&mutex->lock); > read_barrier(); > assert(mutex->magic == FIO_MUTEX_MAGIC); // robrob this is line 150 > if (!mutex->value && mutex->waiters) > pthread_cond_signal(&mutex->cond); > mutex->value++; > pthread_mutex_unlock(&mutex->lock); > } > > 3. The assert does not trigger, and the same crash occurs as before. > > C:\Users\Administrator\fio>c:\cygwin64\bin\gdb -args "c:/program files/fio/fio.exe" --filename=rob.t > mp --size=128m --direct=1 --rw=randread --refill_buffers --norandommap --randrepeat=0 --bs=4k --iode > pth=16 --numjobs=16 --runtime=60 --group_reporting --name=4ktest --time_based > GNU gdb (GDB) 7.6.50.20130728-cvs (cygwin-special) > Copyright (C) 2013 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "x86_64-pc-cygwin". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > For help, type "help". > Type "apropos word" to search for commands related to "word". > .. > Reading symbols from /cygdrive/c/program files/fio/fio.exe...done. > (gdb) run > Starting program: /cygdrive/c/program files/fio/fio.exe --filename=rob.tmp --size=128m --direct=1 --rw=randread --refill_buffers --norandommap --randrepeat=0 --bs=4k --iodepth=16 --numjobs=16 --runtime=60 --group_reporting --name=4ktest --time_based > [New Thread 3428.0x13e0] > fio: this platform does not support process shared mutexes, forcing use of threads. Use the 'thread' > option to get rid of this warning. > 4ktest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=windowsaio, iodepth=16 > ... > 4ktest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=windowsaio, iodepth=16 > fio-2.1.4 > [New Thread 3428.0x10a4] > Starting 16 threads > [New Thread 3428.0x1104] > [New Thread 3428.0x1254] > [New Thread 3428.0xde8] > [New Thread 3428.0xeec] > [New Thread 3428.0xe58] > [New Thread 3428.0x13e8] > [New Thread 3428.0x4b8] > [New Thread 3428.0x13e4] > [New Thread 3428.0x7bc] > [New Thread 3428.0x1358] > [New Thread 3428.0x2f0] > [New Thread 3428.0x8dc] > [New Thread 3428.0x38c] > [New Thread 3428.0x133c] > [New Thread 3428.0x2c8] > [New Thread 3428.0x13c0] > Jobs: 0 (f=0) > Program received signal SIGSEGV, Segmentation fault. > 0x0000000064943236 in pthread_mutex_unlock () > from /cygdrive/c/program files/fio/libwinpthread-1.dll > (gdb) bt > #0 0x0000000064943236 in pthread_mutex_unlock () > from /cygdrive/c/program files/fio/libwinpthread-1.dll > #1 0x000000000000000f in ?? () > #2 0x0000000000422f79 in fio_mutex_up (mutex=0x305b70) at mutex.c:152 > #3 0x0000000000438d71 in run_threads () at backend.c:1812 > #4 0x000000000043918d in fio_backend () at backend.c:1925 > #5 0x000000000044ba31 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) > at fio.c:50 > #6 0x00000000004013c5 in __tmainCRTStartup () > at /usr/src/debug/mingw64-x86_64-runtime-3.0.0-1/crt/crtexe.c:332 > #7 0x00000000004014e8 in mainCRTStartup () > at /usr/src/debug/mingw64-x86_64-runtime-3.0.0-1/crt/crtexe.c:212 > (gdb) f 2 > #2 0x0000000000422f79 in fio_mutex_up (mutex=0x305b70) at mutex.c:152 > 152 pthread_cond_signal(&mutex->cond); > (gdb) p mutex > $1 = (struct fio_mutex *) 0x305b70 > (gdb) p *mutex > $2 = {lock = 0x1bab1f00d, cond = 0x100000000, value = 0, waiters = 0, magic = 176} > (gdb) > > > >> -----Original Message----- >> From: fio-owner@xxxxxxxxxxxxxxx [mailto:fio-owner@xxxxxxxxxxxxxxx] On >> Behalf Of Bruce Cran >> Sent: Friday, 10 January, 2014 12:11 AM >> To: Sitsofe Wheeler; Elliott, Robert (Server Storage) >> Cc: fio@xxxxxxxxxxxxxxx >> Subject: Re: fio 2.1.4 intermittently crashes on windows >> >> >>> On 1/9/2014 10:21 PM, Sitsofe Wheeler wrote: >>> On Fri, Jan 10, 2014 at 12:37:33AM +0000, Elliott, Robert (Server Storage) >> wrote: >>>> I installed Cygwin gcc, mingwg64*, make, and a few other packages... >>>> >>>> The built fio.exe ends up complaining about a missing libpthread1-1.dll. >>>> >>>> Where do I find that? README says where to get pthreadGC2.dll, but >>>> that's apparently not the right file any more. Browsing up on that >>>> FTP site doesn't show it nearby. >>> You're right - the README is out of date. If you (re)run your Cygwin >>> setup exe then you can use its package browser to install >>> mingw[...]-winpthreads . >> >> >> Sorry - Cygwin switched from pthreads-win32 to winpthreads a couple of >> months ago and I forgot to update the README during the last set of >> changesets. >> >> -- >> Bruce Cran >> -- >> To unsubscribe from this list: send the line "unsubscribe fio" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html