Dan wrote: > On Jun 4, 2008, at 2:23 PM, kgs wrote: > > >> kgs wrote: >> >>> kgs wrote: >>> >>> >>>> kgs wrote: >>>> >>>> >>>> >>>>> Hi all, >>>>> I've compiled sqlite3 for arm-linux(armv5t) as well as the tcl >>>>> environment. >>>>> sqlite3 3.5.9 >>>>> tcl 8.4 >>>>> >>>>> I've run testfixture all.test on the hardware it's compiled for. >>>>> Everything runs great until we come to the crash4-1.1.1 up to >>>>> crash4-1.1000.1. >>>>> the messages are : >>>>> Expected: [1 {child process exited abnormally}] >>>>> Got: [1 {couldn't create error file for command: no such >>>>> file or >>>>> directory}] >>>>> >>>>> for each crash4-1.x.1, then : >>>>> *** Giving up... >>>>> 1000 errors out of 26715 tests >>>>> >>>>> the crash4-1.x.2 and crash4-1.x.3 return Ok. >>>>> >>>>> Any ideas as to what may be wrong ? >>>>> >>>>> Thanks in advance >>>>> _______________________________________________ >>>>> sqlite-users mailing list >>>>> sqlite-users@sqlite.org >>>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>>>> >>>>> >>>>> >>>>> >>>> So this is apparently what is happening... >>>> this code in tester.tcl : >>>> set r [catch { >>>> exec [info nameofexec] crash.tcl >@stdout >>>> } msg] >>>> >>>> is returning : >>>> 1 {couldn't create error file for command: no such file or >>>> directory} >>>> >>>> so i think that >@stdout is trying to treat stdout as an open >>>> file... >>>> but it doesn't exist. >>>> >>>> I'm guessing that stdout is supposed to be a fixed thing in >>>> tcl... and >>>> that this is supposed to take the output from the exec and pipe >>>> it to >>>> stdout. >>>> >>>> So... if this is how its supposed to work, then why isn't it ? >>>> >>>> >>>> _______________________________________________ >>>> sqlite-users mailing list >>>> sqlite-users@sqlite.org >>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>>> >>>> >>>> >>> Never mind that last message, >@stdout puts the error message i'm >>> getting in "msg" through the catch. >>> So that leaves, that the testfixture command is not being found. I >>> checked what "info nameofexec" is returning, and it returns the full >>> path and name of testfixture. >>> When I run "testfixture crash.tcl", I get no error... I am confused. >>> >>> Forgive my babbling, this is my first day with tcl. >>> _______________________________________________ >>> sqlite-users mailing list >>> sqlite-users@sqlite.org >>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >>> >>> >> Ok, so now I think I know what really going on... from >> http://www.tcl.tk/faq/tclwin.htm >> B-14: exec: couldn't create error file for command: Error 0 >> If exec returns an error message of "couldn't create error file for >> command: Error 0", the following may help: >> This problem exists under Unix and Windows NT. I have conclusive >> proof >> that under Unix it was being caused by the temporary directory not >> being >> world writable, which explains why superusers were able to "exec" >> something but not a regular user. The "gotcha!" is that /tmp is not >> necessarily the temporary directory that is used, so people were not >> seeing an obvious problem. Tcl uses the tmpnam() system call, which on >> many systems actually uses /var/tmp, and on some systems that >> directory >> was not world writable. I would like to call this a problem with one's >> site administration. >> >> Since root access to the hardware I'm using is not attainable, how >> do I >> work around this ? Any ideas ? >> Any help would be greatly appreciated. >> > > Maybe you could get around the problem by setting the TMPDIR environment > variable to the path of a writable directory (see [man tmpnam]). Failing > that, maybe somebody on comp.lang.tcl will know. > > Dan. > > > > > >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > Ok, i tried setting TMP,TEMP,TMPDIR,TEMPDIR to a path that was writable... no go :(
What I have done now is change exec [info nameofexec] crash.tcl >@stdout to exec [info nameofexec] crash.tcl >&@stdout This routes the error output to stdout and no longer requires writing to a tmp dir. It's a hack, I know, but I figure as long as the exec command gets no errors, it should go... @Dan Thanks for the suggestion. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users