View Issue Details

IDProjectCategoryView StatusLast Update
0000685Subversion for OS/2 & eCSBugpublic2020-08-24 03:07
ReporterLewisR Assigned ToLewisR  
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionreopened 
Summary0000685: svn 1.7.21 (2018-12-30) error when rewinding (updating to previous rev) single file
Descriptionsvn up -r nnnn <filename> should "roll back" or (using the term in the SVN book "unwind") the specified file to the specified revision. Unfortunately, this does not happen with the above build (or with 20190309).
Additional InformationI am returned to a prompt with one of the following:

Under 4OS2:

svn: E720006: Error closing directory: Incorrect internal file identifier.

Under CMD or dash:

Skipped '<filename>'
Summary of conflicts:
  Skipped paths: 1

Under 1.7.16 (2014-08-09), the error is different, but consistent for all shells:

svn: E070008: Error resolving case of '<filename>'

Under 1.6.23 (2013-10-15), the error is also consistent:

Skipped '<filename>'

The same issue occurs when attempting to unwind the file by specific revision or date, and when attempting to move up one or more directory levels and specify the path to the file (even when minding the correct case of the letters in the pathname as well as the file).

It is interesting to note that the following works with the latest (1.7.21) builds:

svn cat -r PREV <filename> ><filename>

It should be noted, though, that:

svn up .

in the directory of the unwound file does not update it to the current revision, though it can successfully be reverted.
TagsNo tags attached.
Attached Files

Activities

Steven Levine

2019-03-12 18:45

manager   ~0003256

FWIW, the regression is probably in the Apache Runtime. The error message implies that one of the Dos APIs failed for some reason. The error number and message correspond to the OS/2 API error ERROR_INVALID_HANDLE and the "Incorrect internal file identifier" message is pulled from the OS0001.MSG.

Steven Levine

2019-03-12 20:17

manager   ~0003257

After I fixed whatever I managed to mess up yesterday, Dave Bashke's OS2TRACE shows the reason for the error pretty clearly. The code is attempting to close a handle that is not open. See svn.trc starting at line 398

The working directory is D:/sla_dev2/TestSVN and the svn command was

  svn up -rPREV testee

testee is a committed file.
svn.trc (18,590 bytes)   
OS/2 API Trace Version 2.45.40 (25 Oct 2010), OS/2 Version 2.45
(c) Copyright IBM Corporation 1995, 2010.

OS/2 API Trace Customization Options:
  -A NONE -B 256 -C OFF -D FILE -E OFF -F ALL -G ALL -I OFF -L 3 -T ON -U NONE -W ALL

SVN.EXE (105E) starting at 12:26:53.54 on 03/12/2019

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A0548 ["D:\HOME/.subversion"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA8B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA8B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 05/06/2017
          |   ftimeLastWrite = 07:11:08
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00000000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A0560 ["D:\HOME/.subversion/auth"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA8B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA8B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 01/24/2006
          |   ftimeLastWrite = 09:32:42
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00000000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A0580 ["D:\HOME/.subversion/auth/svn.simple"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA5B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA5B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 07/31/2018
          |   ftimeLastWrite = 15:23:28
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00001000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A05A8 ["D:\HOME/.subversion/auth/svn.username"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA5B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA5B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 07/31/2018
          |   ftimeLastWrite = 15:20:58
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00001000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A05D0 ["D:\HOME/.subversion/auth/svn.ssl.server"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA5B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA5B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 01/12/2019
          |   ftimeLastWrite = 21:51:50
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00001000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A05F8 ["D:\HOME/.subversion/auth/svn.ssl.client-passphrase"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA5B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA5B
          |   fdateCreation = 03/14/2017
          |   ftimeCreation = 20:51:02
          |   fdateLastAccess = 03/14/2017
          |   ftimeLastAccess = 21:54:18
          |   fdateLastWrite = 05/19/2009
          |   ftimeLastWrite = 16:40:02
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00000000
          |   attrFile = 0x00000010

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A0658 ["D:\HOME/.subversion/README.txt"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA8B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA8B
          |   fdateCreation = 11/26/2015
          |   ftimeCreation = 23:02:36
          |   fdateLastAccess = 03/09/2019
          |   ftimeLastAccess = 18:49:00
          |   fdateLastWrite = 09/13/2010
          |   ftimeLastWrite = 19:19:48
          |   cbFile = 0x00001130
          |   cbFileAlloc = 0x00002000
          |   attrFile = 0x00000000

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A06A0 ["D:\HOME/.subversion/servers"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA8B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA8B
          |   fdateCreation = 11/26/2015
          |   ftimeCreation = 23:02:36
          |   fdateLastAccess = 03/12/2019
          |   ftimeLastAccess = 11:49:10
          |   fdateLastWrite = 02/04/2011
          |   ftimeLastWrite = 18:56:22
          |   cbFile = 0x00001EFD
          |   cbFileAlloc = 0x00002000
          |   attrFile = 0x00000000

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.74, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006A06E8 ["D:\HOME/.subversion/config"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059FA8B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.74
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059FA8B
          |   fdateCreation = 11/26/2015
          |   ftimeCreation = 23:02:36
          |   fdateLastAccess = 03/12/2019
          |   ftimeLastAccess = 11:49:10
          |   fdateLastWrite = 09/21/2011
          |   ftimeLastWrite = 11:45:50
          |   cbFile = 0x00001593
          |   cbFileAlloc = 0x00002000
          |   attrFile = 0x00000000

105E 0001 | Dos32Open Entry at 12:26:53.75, Return Address = 0x0011ECDF (SVN 0001:0010ECDF)
          | Parameter 1: PSZ = 0x006A0888 ["/etc/subversion/servers"]
          | Parameter 2: PHFILE = 0x0059FAA8
          | Parameter 3: PULONG = 0x0059FAA4
          | Parameter 4: ULONG = 0x00000000
          | Parameter 5: ULONG = 0x00000000
          | Parameter 6: ULONG = 0x00000001
          | Parameter 7: ULONG = 0x000020C0
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Exit at 12:26:53.75
     FAIL | Return code: 3 (ERROR_PATH_NOT_FOUND)
          | Parameter 2: PHFILE = 0x0059FAA8 [0x00000000]
          | Parameter 3: PULONG = 0x0059FAA4 [0x0000FFFF]
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Entry at 12:26:53.79, Return Address = 0x0011ECDF (SVN 0001:0010ECDF)
          | Parameter 1: PSZ = 0x006A08C8 ["D:\HOME/.subversion/servers"]
          | Parameter 2: PHFILE = 0x0059FA68
          | Parameter 3: PULONG = 0x0059FA64
          | Parameter 4: ULONG = 0x00000000
          | Parameter 5: ULONG = 0x00000000
          | Parameter 6: ULONG = 0x00000001
          | Parameter 7: ULONG = 0x000020C0
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Exit at 12:26:53.79
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 2: PHFILE = 0x0059FA68 [0x00000006]
          | Parameter 3: PULONG = 0x0059FA64 [0x00000001]
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Close Entry at 12:26:53.81, Return Address = 0x0007817B (SVN 0001:0006817B)
          | Parameter 1: HFILE = 0x00000006

105E 0001 | Dos32Close Exit at 12:26:53.81
     PASS | Return code: 0 (NO_ERROR)

105E 0001 | Dos32Open Entry at 12:26:53.81, Return Address = 0x0011ECDF (SVN 0001:0010ECDF)
          | Parameter 1: PSZ = 0x006B5680 ["/etc/subversion/config"]
          | Parameter 2: PHFILE = 0x0059FAA8
          | Parameter 3: PULONG = 0x0059FAA4
          | Parameter 4: ULONG = 0x00000000
          | Parameter 5: ULONG = 0x00000000
          | Parameter 6: ULONG = 0x00000001
          | Parameter 7: ULONG = 0x000020C0
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Exit at 12:26:53.81
     FAIL | Return code: 3 (ERROR_PATH_NOT_FOUND)
          | Parameter 2: PHFILE = 0x0059FAA8 [0x00000000]
          | Parameter 3: PULONG = 0x0059FAA4 [0x0000FFFF]
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Entry at 12:26:53.81, Return Address = 0x0011ECDF (SVN 0001:0010ECDF)
          | Parameter 1: PSZ = 0x006B56C0 ["D:\HOME/.subversion/config"]
          | Parameter 2: PHFILE = 0x0059FA68
          | Parameter 3: PULONG = 0x0059FA64
          | Parameter 4: ULONG = 0x00000000
          | Parameter 5: ULONG = 0x00000000
          | Parameter 6: ULONG = 0x00000001
          | Parameter 7: ULONG = 0x000020C0
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Open Exit at 12:26:53.81
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 2: PHFILE = 0x0059FA68 [0x00000006]
          | Parameter 3: PULONG = 0x0059FA64 [0x00000001]
          | Parameter 8: PEAOP2 = NULL

105E 0001 | Dos32Close Entry at 12:26:53.81, Return Address = 0x0007817B (SVN 0001:0006817B)
          | Parameter 1: HFILE = 0x00000006

105E 0001 | Dos32Close Exit at 12:26:53.81
     PASS | Return code: 0 (NO_ERROR)

105E 0001 | Dos32QueryCurrentDisk Entry at 12:26:53.81, Return Address = 0x000B5772 (SVN 0001:000A5772)
          | Parameter 1: PULONG = 0x0059F990
          | Parameter 2: PULONG = 0x0059F994

105E 0001 | Dos32QueryCurrentDisk Exit at 12:26:53.81
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 1: PULONG = 0x0059F990 [0x00000004]
          | Parameter 2: PULONG = 0x0059F994 [0x001531FF]

105E 0001 | Dos32QueryCurrentDir Entry at 12:26:53.81, Return Address = 0x000B57B0 (SVN 0001:000A57B0)
          | Parameter 1: ULONG = 0x00000004
          | Parameter 2: PBYTE = 0x0059F99F
          | Parameter 3: PULONG = 0x0059F998 [0x00000101]

105E 0001 | Dos32QueryCurrentDir Exit at 12:26:53.81
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 2: PBYTE = 0x0059F99F ["sla_dev2\TestSVN"]
          | Parameter 3: PULONG = 0x0059F998 [0x00000101]

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.82, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x0059FA4C ["testee"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059F84B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.85
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059F84B
          |   fdateCreation = 04/15/2018
          |   ftimeCreation = 11:16:16
          |   fdateLastAccess = 03/11/2019
          |   ftimeLastAccess = 11:57:52
          |   fdateLastWrite = 04/15/2018
          |   ftimeLastWrite = 11:18:48
          |   cbFile = 0x00000008
          |   cbFileAlloc = 0x00001000
          |   attrFile = 0x00000000

105E 0001 | Dos32FindFirst Entry at 12:26:53.87, Return Address = 0x00091742 (SVN 0001:00081742)
          | Parameter 1: PSZ = 0x0059FA4C ["testee"]
          | Parameter 2: PHDIR = 0x0059F844 [0x00000001]
          | Parameter 3: ULONG = 0x00000036
          | Parameter 4: PVOID = 0x0059F863
          | Parameter 5: ULONG = 0x0000011D
          | Parameter 6: PULONG = 0x0059F840 [0x00000001]
          | Parameter 7: ULONG = 0x00000001

105E 0001 | Dos32FindFirst Exit at 12:26:53.87
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 2: PHDIR = 0x0059F844 [0x00000001]
          | Parameter 4: PVOID = 0x0059F863
          |   pFILEFINDBUF3[ 0 ] = 0x0059F863
          |     oNextEntryOffset = 0x00000000
          |     fdateCreation = 04/15/2018
          |     ftimeCreation = 11:16:16
          |     fdateLastAccess = 03/11/2019
          |     ftimeLastAccess = 11:57:52
          |     fdateLastWrite = 04/15/2018
          |     ftimeLastWrite = 11:18:48
          |     cbFile = 0x00000008
          |     cbFileAlloc = 0x00001000
          |     attrFile = 0x00000000
          |     cchName = 0x06
          |     achName = "testee"
          | Parameter 6: PULONG = 0x0059F840 [0x00000001]

105E 0001 | Dos32QueryCurrentDisk Entry at 12:26:53.87, Return Address = 0x000B5772 (SVN 0001:000A5772)
          | Parameter 1: PULONG = 0x0059F8C0
          | Parameter 2: PULONG = 0x0059F8C4

105E 0001 | Dos32QueryCurrentDisk Exit at 12:26:53.87
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 1: PULONG = 0x0059F8C0 [0x00000004]
          | Parameter 2: PULONG = 0x0059F8C4 [0x001531FF]

105E 0001 | Dos32QueryCurrentDir Entry at 12:26:53.87, Return Address = 0x000B57B0 (SVN 0001:000A57B0)
          | Parameter 1: ULONG = 0x00000004
          | Parameter 2: PBYTE = 0x0059F8CF
          | Parameter 3: PULONG = 0x0059F8C8 [0x00000101]

105E 0001 | Dos32QueryCurrentDir Exit at 12:26:53.87
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 2: PBYTE = 0x0059F8CF ["sla_dev2\TestSVN"]
          | Parameter 3: PULONG = 0x0059F8C8 [0x00000101]

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.87, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006BC540 ["D:/sla_dev2/TestSVN/testee"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059F81B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.87
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059F81B
          |   fdateCreation = 04/15/2018
          |   ftimeCreation = 11:16:16
          |   fdateLastAccess = 03/11/2019
          |   ftimeLastAccess = 11:57:52
          |   fdateLastWrite = 04/15/2018
          |   ftimeLastWrite = 11:18:48
          |   cbFile = 0x00000008
          |   cbFileAlloc = 0x00001000
          |   attrFile = 0x00000000

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.87, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006BC580 ["D:/sla_dev2/TestSVN/.svn"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059F7EB
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.89
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059F7EB
          |   fdateCreation = 04/15/2018
          |   ftimeCreation = 11:10:20
          |   fdateLastAccess = 04/15/2018
          |   ftimeLastAccess = 11:10:20
          |   fdateLastWrite = 03/11/2019
          |   ftimeLastWrite = 11:20:22
          |   cbFile = 0x00000000
          |   cbFileAlloc = 0x00000000
          |   attrFile = 0x00000012

105E 0001 | Dos32QueryPathInfo Entry at 12:26:53.89, Return Address = 0x00091648 (SVN 0001:00081648)
          | Parameter 1: PSZ = 0x006BC5A0 ["D:/sla_dev2/TestSVN/.svn/wc.db"]
          | Parameter 2: ULONG = 0x00000001
          | Parameter 3: PVOID = 0x0059F79B
          | Parameter 4: ULONG = 0x00000018

105E 0001 | Dos32QueryPathInfo Exit at 12:26:53.89
     PASS | Return code: 0 (NO_ERROR)
          | Parameter 3: PVOID = 0x0059F79B
          |   fdateCreation = 04/15/2018
          |   ftimeCreation = 11:10:20
          |   fdateLastAccess = 03/11/2019
          |   ftimeLastAccess = 11:57:52
          |   fdateLastWrite = 03/11/2019
          |   ftimeLastWrite = 11:20:22
          |   cbFile = 0x0001D000
          |   cbFileAlloc = 0x0001D000
          |   attrFile = 0x00000020

105E 0001 | Dos32FindFirst Entry at 12:26:53.97, Return Address = 0x0011756E (SVN 0001:0010756E)
          | Parameter 1: PSZ = 0x006BC7F8 ["D:/sla_dev2/TestSVN/testee/*"]
          | Parameter 2: PHDIR = 0x006BC6A0 [0xFFFFFFFF]
          | Parameter 3: ULONG = 0x00000037
          | Parameter 4: PVOID = 0x006BC6A4
          | Parameter 5: ULONG = 0x0000011D
          | Parameter 6: PULONG = 0x0059F9EC [0x00000001]
          | Parameter 7: ULONG = 0x00000001

105E 0001 | Dos32FindFirst Exit at 12:26:53.97
     FAIL | Return code: 3 (ERROR_PATH_NOT_FOUND)
          | Parameter 2: PHDIR = 0x006BC6A0 [0x0000556D]
          | Parameter 4: PVOID = 0x006BC6A4
          | Parameter 6: PULONG = 0x0059F9EC [0x00000001]

105E 0001 | Dos32FindClose Entry at 12:26:53.97, Return Address = 0x001174B8 (SVN 0001:001074B8)
          | Parameter 1: HDIR = 0x0000556D

105E 0001 | Dos32FindClose Exit at 12:26:53.97
     FAIL | Return code: 6 (ERROR_INVALID_HANDLE)

105E 0001 | Dos32FindClose Entry at 12:26:54.01, Return Address = 0x001174B8 (SVN 0001:001074B8)
          | Parameter 1: HDIR = 0x0000556D

105E 0001 | Dos32FindClose Exit at 12:26:54.01
     FAIL | Return code: 6 (ERROR_INVALID_HANDLE)

SVN.EXE (105E) stopping at 12:26:54.01 on 03/12/2019

svn.trc (18,590 bytes)   

Steven Levine

2019-03-14 01:34

manager   ~0003258

The attached should fix this trap. The code is assuming that DosFindFirst will set the value of thedir->handle to 0 if the API fails. The is not true.
dir.c.diff (349 bytes)   
diff --git a/file_io/os2/dir.c b/file_io/os2/dir.c
index 3b08355..27d6f05 100644
--- a/file_io/os2/dir.c
+++ b/file_io/os2/dir.c
@@ -114,6 +114,7 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
     }
 
     thedir->validentry = FALSE;
+    thedir->handle = 0;
 
     if (rv)
         return APR_FROM_OS_ERROR(rv);
dir.c.diff (349 bytes)   

psmedley

2019-03-17 06:25

administrator   ~0003259

http://smedley.id.au/tmp/subversion-1.7.21-os2-20190317.zip has the patch from Steven (not tested)

Steven Levine

2019-03-17 06:58

manager   ~0003260

Thanks Paul. Seems to work fine for both local and repo repos.

LewisR

2019-03-17 20:08

developer   ~0003261

Confirmed fixed. Kudos, guys. I can now update and rewind as expected (tested under 4OS2 as well as CMD and dash). I can specify a single filename, an absolute path, or a relative path. I can rewind a single file and then update that file's directory (and that file) by only specifying the directory name. Nice.

LewisR

2019-03-19 14:26

developer   ~0003262

Last edited: 2019-03-19 14:26

Reopening due to some late-discovered side-effects of the proposed patch.

Issue 1 (reported by David A): This version appears to be broken as it seems to now have broken the normal case sensitivity. [N.B.: I have not been able to confirm or deny this locally, mainly due to the next issue.]

Issue 2: svn update at the root of the repository tree seems to cause some difficulties for sqlite:

{0}[d:\] svn up d:\devel\arcaos\trunk
Updating 'D:/devel/arcaos/trunk':
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database

This leaves the workspace in an inconsistent state, requiring cleanup before trying again. Results with other shells similar (the above was from 4OS2).

Steven Levine

2019-03-19 21:34

manager   ~0003263

The original patch was too agressive. It cleared the handle for all errors. It should have cleared the handle only when DosFindFirstFailed.

dir.c.diif2 will avoid this. Be sure to revert the original dir.c.diff patch.

The original patch had the side effect of bypassing all DosFindClose calls, so that we eventually run out of file handles. The sqlite error is simply a red-herring side effect of a file open failing.

We are only going to see this error on large repositories.
dir.c.diff2 (713 bytes)   
diff --git a/file_io/os2/dir.c b/file_io/os2/dir.c
index 3b08355..c2da136 100644
--- a/file_io/os2/dir.c
+++ b/file_io/os2/dir.c
@@ -79,6 +79,9 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted,
         rv = DosFindFirst(apr_pstrcat(thedir->pool, thedir->dirname, "/*", NULL), &thedir->handle, 
                           FILE_ARCHIVED|FILE_DIRECTORY|FILE_SYSTEM|FILE_HIDDEN|FILE_READONLY, 
                           &thedir->entry, sizeof(thedir->entry), &entries, FIL_STANDARD);
+        // 2019-03-13 SHL for #685
+        if (rv)
+            thedir->handle = 0;
     } else {
         rv = DosFindNext(thedir->handle, &thedir->entry, sizeof(thedir->entry), &entries);
     }
dir.c.diff2 (713 bytes)   

Steven Levine

2019-03-20 02:08

manager   ~0003264

Reminder sent to: psmedley

Please give the replacement patch a try when yoiu get a moment.

psmedley

2019-03-20 08:44

administrator   ~0003265

Tried building tonight, but had a trap in OS2KRNL and system hangs trying to build after a reboot. Running chkdsk now... might be tomorrow before I have a new executable

psmedley

2019-03-21 08:18

administrator   ~0003266

Updated build at http://smedley.id.au/tmp/subversion-1.7.21-os2-20190321.zip

LewisR

2019-03-21 14:57

developer   ~0003267

Last edited: 2019-03-21 14:58

Thanks, Paul.

Unfortunately, with 20190321, I still get:

Updating 'J:/devel/arcaos':
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a readonly database

Steven Levine

2019-03-21 22:44

manager   ~0003268

I have to suspect that the first patch (dir.c.diff) was not removed. If this is not it, I will test more here.

psmedley

2019-03-21 22:52

administrator   ~0003269

Pretty sure it was removed, but perhaps the new apr.lib didn't install. I'll confirm this evening.

Steven Levine

2019-03-21 23:15

manager   ~0003270

It looks like the zip ships is shipping with an old svn.map. Please check this when you get a moment. Thanks.

Steven Levine

2019-03-22 01:04

manager   ~0003271

Very odd. It appears that the old patch is still in place. However, for some reason the generated code differs somewhat. Did you rebuild with a different gcc build?

psmedley

2019-03-22 01:08

administrator   ~0003272

Nope, same gcc (8.2.0)

psmedley

2019-03-22 08:30

administrator   ~0003273

http://smedley.id.au/tmp/subversion-1.7.21-os2-20190322.zip

LewisR

2019-03-22 14:56

developer   ~0003274

Sorry, Paul. With 20190322, I still get:

svn: E200031: sqlite: attempt to write a readonly database

when attempting to update the workspace root. The rewind operation works, and I can update that single file to the current rev, but a full update of the workspace fails.

psmedley

2019-03-22 19:45

administrator   ~0003275

fyi, the dir.c I'm using is at http://smedley.id.au/tmp/dir.c

Steven Levine

2019-03-22 22:19

manager   ~0003276

This is:

dir.c:128
    thedir->handle = 0;

leftover from the first patch. It needs to go away.

psmedley

2019-03-23 01:32

administrator   ~0003277

uggh :( I swear I removed that line and checked it was gone ;(

http://smedley.id.au/tmp/subversion-1.7.21-os2-20190323.zip

Steven Levine

2019-03-23 02:45

manager   ~0003278

Thanks. This appears to take care of the sqllite read only issue.

I'm not sure, but I think there may be an unintended delete at:

     finfo->pool = thedir->pool;
     finfo->fname = NULL;
- finfo->valid = 0;

This will leave finfo->valid uninitialized for some code paths.

psmedley

2019-03-23 02:58

administrator   ~0003279

Thanks - yes, that was an accidental delete - it's already fixed in today's build

LewisR

2019-03-23 13:58

developer   ~0003280

I think this one's the charm. If anything else crops up, I'll open fresh or re-open here, as appropriate, but 20190323 resolves the original issue and the unintended side-effect from the original patch.

Thanks!

Issue History

Date Modified Username Field Change
2019-03-12 02:45 LewisR New Issue
2019-03-12 18:45 Steven Levine Note Added: 0003256
2019-03-12 20:17 Steven Levine File Added: svn.trc
2019-03-12 20:17 Steven Levine Note Added: 0003257
2019-03-14 01:34 Steven Levine File Added: dir.c.diff
2019-03-14 01:34 Steven Levine Note Added: 0003258
2019-03-17 06:25 psmedley Note Added: 0003259
2019-03-17 06:58 Steven Levine Note Added: 0003260
2019-03-17 20:08 LewisR Assigned To => LewisR
2019-03-17 20:08 LewisR Status new => resolved
2019-03-17 20:08 LewisR Resolution open => fixed
2019-03-17 20:08 LewisR Note Added: 0003261
2019-03-19 14:26 LewisR Status resolved => feedback
2019-03-19 14:26 LewisR Resolution fixed => reopened
2019-03-19 14:26 LewisR Note Added: 0003262
2019-03-19 14:26 LewisR Note Edited: 0003262
2019-03-19 21:34 Steven Levine File Added: dir.c.diff2
2019-03-19 21:34 Steven Levine Note Added: 0003263
2019-03-20 02:08 Steven Levine Note Added: 0003264
2019-03-20 08:44 psmedley Note Added: 0003265
2019-03-21 08:18 psmedley Note Added: 0003266
2019-03-21 14:57 LewisR Note Added: 0003267
2019-03-21 14:58 LewisR Note Edited: 0003267
2019-03-21 22:44 Steven Levine Note Added: 0003268
2019-03-21 22:52 psmedley Note Added: 0003269
2019-03-21 23:15 Steven Levine Note Added: 0003270
2019-03-22 01:04 Steven Levine Note Added: 0003271
2019-03-22 01:08 psmedley Note Added: 0003272
2019-03-22 08:30 psmedley Note Added: 0003273
2019-03-22 14:56 LewisR Note Added: 0003274
2019-03-22 19:45 psmedley Note Added: 0003275
2019-03-22 22:19 Steven Levine Note Added: 0003276
2019-03-23 01:32 psmedley Note Added: 0003277
2019-03-23 02:45 Steven Levine Note Added: 0003278
2019-03-23 02:58 psmedley Note Added: 0003279
2019-03-23 13:58 LewisR Status feedback => resolved
2019-03-23 13:58 LewisR Note Added: 0003280
2020-08-24 03:07 psmedley Status resolved => closed