Re: ssl tests fail on windows / slurp_file() offset doesn't work on win
Andres Freund <andres@anarazel.de>
Attachments
Hi, On 2021-10-03 10:18:31 -0700, Andres Freund wrote: > As you can see in the test output, every mismatch prints the whole file, > despite only intending to show the tail. Which appears to be because the > windows portion of 3c5b0685b921 doesn't actually work. The reason for that in > turn is that afaict the setFilePointer doesn't change the file position in a > way that affects perl. > > Consequently, if I force the !win32 path, the tests pass. > > At first I assumed the cause of this is that while the setFilePointer() modifies the > state of the underlying handle, it doesn't actually let perl know about > that. Due to buffering etc perl likely has its own bookeeping about the > position in the file. There's some pretty clear hints in > https://perldoc.perl.org/functions/seek > > But the problem turns out to be that it's bogus to pass $fh to > setFilePointer(). That's a perl handle, not an win32 handle. Fixing that seems > to make the tests pass. It does (I only let it run to the ssl test, then pushed a newer revision): https://cirrus-ci.com/task/5345293928497152?logs=ssl#L5 > Why did 3c5b0685b921 choose to use setFilePointer() in the first place? At > this point it's a perl filehandle, so we should just use perl seek? > > > Leaving the concrete breakage aside, I'm somewhat unhappy that there's not a > single comment explaining why TestLib.pm is trying to use native windows > APIs. > > Isn't the code as-is also "leaking" an open IO::Handle? There's a > CloseHandle($fHandle), but nothing is done to $fh. But perhaps there's some > perl magic cleaning things up? Even if so, loks like just closing $fh will > close the handle as well... I think something roughly like the attached might be a good idea. Runs locally on linux, and hopefully still on windows https://cirrus-ci.com/build/4857291573821440 Greetings, Andres Freund
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
ci: enable zstd where available.
- ff50baec65bb 15.0 landed
-
ci: compile with -Og where applicable.
- 4a288a37f9b7 15.0 landed
-
ci: include hints how to install OS packages.
- 225fb558cd42 15.0 landed
-
ci: fix copy-paste mistake in 16eb8231d1b.
- f79c94f39df0 15.0 landed
-
ci: macos: align sysinfo_script to other tasks.
- 0a156058aa49 15.0 landed
-
ci: Only use one artifact instruction for logs.
- 16eb8231d1b5 15.0 landed
-
ci: s/CCACHE_SIZE/CCACHE_MAXSIZE/.
- 79b79dd57a96 15.0 landed
-
pg_basebackup: Skip a few more fsyncs if --no-sync is specified.
- 9c86d9337eb0 15.0 landed
-
TAP tests: check for postmaster.pid anyway when "pg_ctl start" fails.
- b0623625a0a3 14.2 landed
- 99aa0ff68a2c 11.15 landed
- 6eec809fbcfb 13.6 landed
- 6c4a8903b93f 15.0 landed
- 5940d1b027d7 12.10 landed
- 40756287ff1f 10.20 landed
-
Don't enable fsync in src/test/recovery/t/008_fsm_truncation.pl.
- a7f4171071bb 15.0 landed
-
ci: windows: run initdb with --no-sync.
- dfc0cb3940cd 15.0 landed
-
ci: windows: enable build summary to make it easier to spot warnings / errors.
- 8a1ce5e54f6d 15.0 landed
-
ci: Add continuous integration for github repositories via cirrus-ci.
- 93d973494613 15.0 landed
-
Fix TestLib::slurp_file() with offset on windows.
- 9e3be5c182d7 9.6.24 landed
- d5fa3c086eab 10.19 landed
- 0a134c860fc1 11.14 landed
- cd1b2334b8a2 12.9 landed
- 5ba397f7404e 13.5 landed
- c4465cd09e3a 14.1 landed
- 2f74db1236fe 15.0 landed