On Mon, Jun 01, 2020 at 11:08:48AM -0400, Andrew Piskorski wrote:
> ## Last test that runs on Windows, it locks up forever:
> 
> http_persistent.test
> ns_sockioctl failed: no such file or directory
> while executing
> "ns_socknread $s"
> (procedure "client_readable" line 2)

For now I simply moved the entire http_persistent.test file out of the
way, so the server skips those tests.  With that, test server got
further, but eventually crashed with what looks like a null pointer
dereference, here:

  [03/Jun/2020:14:25:28][4844.2b10][-conn:test:default:1:229-] Notice: inside 
the filter 3.4
  ns_serverpath.test
  ns_set.test
  ns_sha1.test
  ns_sls.test
  ns_striphtml.test
  ns_thread.test

  [03/Jun/2020:14:25:28][4844.13bc][-tcl-nsthread:7-] Notice: update 
interpreter to epoch 1, trace none, time 0.219973 secs
  Assertion failed: (addr != ((void *)0)), file tclobj.c, line 325
  [03/Jun/2020:14:25:32][4844.1dd8][-tcl-nsthread:8-] Notice: update 
interpreter to epoch 1, trace none, time 3.902536 secs

The stack trace looked like this:

  ucrtbased.dll!000007feedad41cf()        Unknown
  libnsd.dll!Ns_TclSetAddrObj(Tcl_Obj * objPtr, const char * type, void * addr) 
Line 325  C
  libnsd.dll!NsTclThreadObjCmd(void * clientData, Tcl_Interp * interp, int 
objc, Tcl_Obj * const * objv) Line 239 C
  [External Code]
  libnsd.dll!CmdThread(void * arg) Line 1333      C
  nsthread.dll!NsThreadMain(void * arg) Line 236  C
  nsthread.dll!ThreadMain(void * arg) Line 874    C

So that was inside Ns_TclSetAddrObj(), probably in the
"NS_NONNULL_ASSERT(addr != NULL);" line.  It was called from
NsTclThreadObjCmd(), in "case THandleIdx", line 238 in tclthread.c.
That presumably came from a Tcl "ns_thread handle" call, and there's
only one of those in the test suite, "test ns_thread-2.6" on line 70
of "ns_thread.test".  But I don't understand why that would throw a
null pointer exception!

Prior to that crash, various other interesting test failures cropped
up, including both "ns_listencallback-1.0" and "ns_schedule-2.1" below.
The ns_schedule-2.1 failure certainly sounds related to my original
problem of the scheduler thread getting stuck, but there's enough else
going on here that don't have any idea where the real source of the
problem might be.


==== ns_listencallback-1.0 register FAILED
==== Contents of test case:

set localhost [expr {[ns_info ipv6] ? "::1" : "127.0.0.1"}]
ns_log notice "open sockent on $localhost 7227"
set fds [ns_sockopen $localhost 7227]
lassign $fds rfd wfd
set size 0

if {[gets $rfd line] == -1} {
ns_log error "got no data"
} else {
incr size [string length $line]
puts $wfd "How are you?"
flush $wfd
gets $rfd line
incr size [string length $line]
}
return [list size $size]

---- Result was:
size 0
---- Result should have been (exact matching):
size 46
==== ns_listencallback-1.0 FAILED


==== ns_schedule-2.1 schedule proc: interval FAILED
==== Contents of test case:

set id [ns_schedule_proc 1s {nsv_lappend . . ns_schedule-2.1}]
ns_sleep 2.5s
ns_unschedule_proc $id
nsv_get . .

---- Result was:
ns_schedule-2.1
---- Result should have been (glob matching):
ns_schedule-2.1 ns_schedule-2.1*
==== ns_schedule-2.1 FAILED

-- 
Andrew Piskorski <a...@piskorski.com>


_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to