On Sun, 12 Nov 2017 13:49:39 GMT, Sönke Ludwig wrote:

Spontaneously, I can't think of a recent logic change that might have caused this. Can you try to enable debug output by running with dub -- --vvv? That should print a stack trace when the error happens to get some more insight.

OK, here's the outcome of that. The form submitted has only a submit button and no other form elements in this version.

[main(tepm) dbv] route match: /logout -> POST /logout []
[main(tepm) dbv] si 7f2bee9c6488
[main(tepm) dbv] siw 7f2bee9c6488
[main(tepm) dbv] si 7f2bee9c6548
[main(tepm) dbv] siw 7f2bee9c6548
[main(tepm) dbv] si 7f2bee9c6648
[main(tepm) dbv] siw 7f2bee9c6648
[main(tepm) dbv] si 7f2bee9c6708
[main(tepm) dbv] siw 7f2bee9c6708
[main(tepm) dbv] si 7f2bee9c6808
[main(tepm) dbv] siw 7f2bee9c6808
[main(tepm) dbv] si 7f2bee9c6888
[main(tepm) dbv] siw 7f2bee9c6888
[main(tepm) dbv] si 7f2bee9c6908
[main(tepm) dbv] siw 7f2bee9c6908
[main(tepm) dbv] si 7f2bee9c6988
[main(tepm) dbv] siw 7f2bee9c6988
[main(tepm) dbv] si 7f2bee9c6a08
[main(tepm) dbv] siw 7f2bee9c6a08
[main(tepm) ERR] HTTP connection handler has thrown: Reached EOF while searching for end marker.
[main(tepm) dbg] Full error: object.Exception@../../../.dub/packages/vibe-d-0.8.1/vibe-d/stream/vibe/stream/operations.d(362): Reached EOF while searching for end marker.
[main(tepm) dbg] ----------------
[main(tepm) dbg] /usr/include/dmd/phobos/std/exception.d:420 pure @safe void std.exception.bailOut!(Exception).bailOut(immutable(char)[], ulong, const(char[])) [0xba5082]
[main(tepm) dbg] /usr/include/dmd/phobos/std/exception.d:388 pure @safe bool std.exception.enforce!(Exception, bool).enforce(bool, lazy const(char)[], immutable(char)[], ulong) [0xba4ffe]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/stream/vibe/stream/operations.d:362 @safe void vibe.stream.operations.readUntilSmall!(vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, vibe.core.stream.InputStream).readUntilSmall(vibe.core.stream.InputStream, ref vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, const(ubyte[]), ulong) [0xd5d0a9]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/stream/vibe/stream/operations.d:142 @safe void vibe.stream.operations.readUntil!(vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, vibe.core.stream.InputStream).readUntil(vibe.core.stream.InputStream, ref vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, const(ubyte[]), ulong) [0xd5cfee]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/stream/vibe/stream/operations.d:56 @safe void vibe.stream.operations.readLine!(vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, vibe.core.stream.InputStream).readLine(vibe.core.stream.InputStream, ref vibe.utils.array.AllocAppender!(ubyte[], ubyte).AllocAppender, ulong, immutable(char)[]) [0xd5cf90]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/stream/vibe/stream/operations.d:41 @safe ubyte[] vibe.stream.operations.readLine!(vibe.core.stream.InputStream).readLine(vibe.core.stream.InputStream, ulong, immutable(char)[], std.experimental.allocator.IAllocator) [0xd5cf4a]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/inet/vibe/inet/webform.d:139 @trusted immutable(char)[] vibe.inet.webform.parseMultiPartForm!(vibe.core.stream.InputStream).parseMultiPartForm(ref vibe.utils.dictionarylist.DictionaryList!(immutable(char)[], true, 16uL, false).DictionaryList, ref vibe.utils.dictionarylist.DictionaryList!(vibe.inet.webform.FilePart, true, 0uL, false).DictionaryList, immutable(char)[], vibe.core.stream.InputStream, ulong).__lambda7() [0xd5aa92]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/inet/vibe/inet/webform.d:139 @safe void vibe.inet.webform.parseMultiPartForm!(vibe.core.stream.InputStream).parseMultiPartForm(ref vibe.utils.dictionarylist.DictionaryList!(immutable(char)[], true, 16uL, false).DictionaryList, ref vibe.utils.dictionarylist.DictionaryList!(vibe.inet.webform.FilePart, true, 0uL, false).DictionaryList, immutable(char)[], vibe.core.stream.InputStream, ulong) [0xd5a90b]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/inet/vibe/inet/webform.d:53 @safe bool vibe.inet.webform.parseFormData(ref vibe.utils.dictionarylist.DictionaryList!(immutable(char)[], true, 16uL, false).DictionaryList, ref vibe.utils.dictionarylist.DictionaryList!(vibe.inet.webform.FilePart, true, 0uL, false).DictionaryList, immutable(char)[], vibe.core.stream.InputStream, ulong) [0xd5a189]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:938 @safe void vibe.http.server.HTTPServerRequest.parseFormAndFiles() [0xc98679]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:946 ref @property @safe vibe.utils.dictionarylist.DictionaryList!(vibe.inet.webform.FilePart, true, 0uL, false).DictionaryList vibe.http.server.HTTPServerRequest.files() [0xc98706]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:2192 @safe bool vibe.http.server.handleRequest(vibe.internal.interfaceproxy.InterfaceProxy!(vibe.core.stream.Stream).InterfaceProxy, vibe.core.net.TCPConnection, vibe.http.server.HTTPListenInfo, ref vibe.http.server.HTTPServerSettings, ref bool, scope std.experimental.allocator.IAllocator) [0xc9f91d]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:1931 @trusted void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPListenInfo).__lambda4() [0xc9dada]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:1923 @safe void vibe.http.server.handleHTTPConnection(vibe.core.net.TCPConnection, vibe.http.server.HTTPListenInfo) [0xc9d853]
[main(tepm) dbg] ../../../.dub/packages/vibe-d-0.8.1/vibe-d/http/vibe/http/server.d:1797 nothrow @safe void vibe.http.server.listenHTTPPlain(vibe.http.server.HTTPServerSettings, vibe.http.server.HTTPServerContext).doListen(vibe.http.server.HTTPListenInfo, vibe.http.server.HTTPServerContext, bool, bool).__lambda6(vibe.core.net.TCPConnection) [0xc9d00d]
[main(tepm) dbg] ../../../.dub/packages/vibe-core-1.2.0/vibe-core/source/vibe/core/task.d:542 void vibe.core.task.TaskFuncInfo.set!(void delegate(vibe.core.net.TCPConnection) @safe, vibe.core.net.TCPConnection).set(ref void delegate(vibe.core.net.TCPConnection) @safe, ref vibe.core.net.TCPConnection).callDelegate(ref vibe.core.task.TaskFuncInfo) [0xddcd68]
[main(tepm) dbg] ../../../.dub/packages/vibe-core-1.2.0/vibe-core/source/vibe/core/task.d:567 void vibe.core.task.TaskFuncInfo.call() [0xdb6d95]
[main(tepm) dbg] ../../../.dub/packages/vibe-core-1.2.0/vibe-core/source/vibe/core/task.d:380 nothrow void vibe.core.task.TaskFiber.run() [0xdb61c1]
[main(tepm) dbg] ??:? void core.thread.Fiber.run() [0xe7a6df]
[main(tepm) dbg] ??:? fiber_entryPoint [0xe7a5ba]
[main(tepm) dbg] ??:? [0xffffffff]