git lfs throws "expected OID error"

Hello, Everyone!

I using Microsoft Windows to building ParaView in version5.13.0

I am getting the following error when trying to clone the repository

Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (b30a14a308f64c6fc2
969e2b959d79dacdc5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e1763
04147146, got 82ed52948711a0269f594341d04e6de8e72c819f628d3c2177fb522bb8959ff8 after 4132 bytes written

it seems as if the repo is corrupt, Can you fix it?

I am using git version 2.51.0.windows.2 and git-lfs/3.7.0 (GitHub; windows amd64; go 1.24.4; git 92dddf56)


the processing of cloning the repo as follow:

cd C:
mkdir pv
cd pv
git clone https://gitlab.kitware.com/paraview/paraview.git
mv paraview pv
mkdir pvb
cd pv
git checkout v5.13.0
git submodule sync
git submodule sync -recursive
git submodule update --init --recursive

the details after running command git submodule update --init --recursive

$ git submodule update --init --recursive
Submodule 'ThirdParty/IceT/vtkicet' (https://gitlab.kitware.com/paraview/icet.git) registered for path 'ThirdParty/Ice
T/vtkicet'
Submodule 'ThirdParty/QtTesting/vtkqttesting' (https://gitlab.kitware.com/paraview/qttesting.git) registered for path
'ThirdParty/QtTesting/vtkqttesting'
Submodule 'Utilities/VisItBridge' (https://gitlab.kitware.com/paraview/visitbridge.git) registered for path 'Utilities
/VisItBridge'
Submodule 'VTK' (https://gitlab.kitware.com/vtk/vtk.git) registered for path 'VTK'
Cloning into 'C:/pv/pv/ThirdParty/IceT/vtkicet'...
Cloning into 'C:/pv/pv/ThirdParty/QtTesting/vtkqttesting'...
Cloning into 'C:/pv/pv/Utilities/VisItBridge'...
Cloning into 'C:/pv/pv/VTK'...
Submodule path 'ThirdParty/IceT/vtkicet': checked out '32816fe5592de3be664da6f8466a546f221d8532'
Submodule path 'ThirdParty/QtTesting/vtkqttesting': checked out '375c33053704e2d99dda4d2e1dfc9f6f85b3e73f'
Submodule path 'Utilities/VisItBridge': checked out '093ea1dfddbb3266554ece823ae8d7dedc66eb3f'
Submodule path 'VTK': checked out 'd40d065bddbdcee9227ff673b471b2bc73232d1e'
Submodule 'VTK-m' (https://gitlab.kitware.com/vtk/vtk-m.git) registered for path 'VTK/ThirdParty/vtkm/vtkvtkm/vtk-m'
Cloning into 'C:/pv/pv/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m'...
Downloading data/README.md (643 B)
Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (b30a14a308f64c6fc2
969e2b959d79dacdc5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e1763
04147146, got 82ed52948711a0269f594341d04e6de8e72c819f628d3c2177fb522bb8959ff8 after 4132 bytes written

Errors logged to 'C:\pv\pv\.git\modules\VTK\modules\VTK-m\lfs\logs\20251113T150113.9994675.log'.
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: data/README.md: smudge filter lfs failed
fatal: Unable to checkout '3c9249871a5458cac01bbfe83307232aadd6bed5' in submodule path 'VTK/ThirdParty/vtkm/vtkvtkm/vt
k-m'
fatal: Failed to recurse into submodule path 'VTK'


the log file 20251113T150113.9994675.log

$ cat ./.git/modules/VTK/modules/VTK-m/lfs/logs/20251113T150113.9994675.log
git-lfs/3.7.0 (GitHub; windows amd64; go 1.24.4; git 92dddf56)
git version 2.51.0.windows.2

$ git-lfs.exe filter-process
Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146, got 82ed52948711a0269f594341d04e6de8e72c819f628d3c2177fb522bb8959ff8 after 4132 bytes written

expected OID b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146, got 82ed52948711a0269f594341d04e6de8e72c819f628d3c2177fb522bb8959ff8 after 4132 bytes written
Error downloading data/README.md (b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146)
github.com/git-lfs/git-lfs/v3/errors.newWrappedError
        github.com/git-lfs/git-lfs/v3/errors/types.go:228
github.com/git-lfs/git-lfs/v3/errors.Wrap
        github.com/git-lfs/git-lfs/v3/errors/errors.go:74
github.com/git-lfs/git-lfs/v3/lfs.(*GitFilter).downloadFile
        github.com/git-lfs/git-lfs/v3/lfs/gitfilter_smudge.go:126
github.com/git-lfs/git-lfs/v3/lfs.(*GitFilter).Smudge
        github.com/git-lfs/git-lfs/v3/lfs/gitfilter_smudge.go:85
github.com/git-lfs/git-lfs/v3/commands.smudge
        github.com/git-lfs/git-lfs/v3/commands/command_smudge.go:128
github.com/git-lfs/git-lfs/v3/commands.filterCommand
        github.com/git-lfs/git-lfs/v3/commands/command_filter_process.go:132
github.com/spf13/cobra.(*Command).execute
        github.com/spf13/cobra@v1.7.0/command.go:944
github.com/spf13/cobra.(*Command).ExecuteC
        github.com/spf13/cobra@v1.7.0/command.go:1068
github.com/spf13/cobra.(*Command).Execute
        github.com/spf13/cobra@v1.7.0/command.go:992
github.com/git-lfs/git-lfs/v3/commands.Run
        github.com/git-lfs/git-lfs/v3/commands/run.go:154
main.main
        github.com/git-lfs/git-lfs/v3/git-lfs.go:34
runtime.main
        runtime/proc.go:283
runtime.goexit
        runtime/asm_amd64.s:1700
Smudge error
github.com/git-lfs/git-lfs/v3/errors.newWrappedError
        github.com/git-lfs/git-lfs/v3/errors/types.go:228
github.com/git-lfs/git-lfs/v3/errors.NewSmudgeError
        github.com/git-lfs/git-lfs/v3/errors/types.go:314
github.com/git-lfs/git-lfs/v3/lfs.(*GitFilter).Smudge
        github.com/git-lfs/git-lfs/v3/lfs/gitfilter_smudge.go:102
github.com/git-lfs/git-lfs/v3/commands.smudge
        github.com/git-lfs/git-lfs/v3/commands/command_smudge.go:128
github.com/git-lfs/git-lfs/v3/commands.filterCommand
        github.com/git-lfs/git-lfs/v3/commands/command_filter_process.go:132
github.com/spf13/cobra.(*Command).execute
        github.com/spf13/cobra@v1.7.0/command.go:944
github.com/spf13/cobra.(*Command).ExecuteC
        github.com/spf13/cobra@v1.7.0/command.go:1068
github.com/spf13/cobra.(*Command).Execute
        github.com/spf13/cobra@v1.7.0/command.go:992
github.com/git-lfs/git-lfs/v3/commands.Run
        github.com/git-lfs/git-lfs/v3/commands/run.go:154
main.main
        github.com/git-lfs/git-lfs/v3/git-lfs.go:34
runtime.main
        runtime/proc.go:283
runtime.goexit
        runtime/asm_amd64.s:1700

Current time in UTC:
2025-11-13 07:01:14

Environment:
LocalWorkingDir=C:\pv\pv\VTK\ThirdParty\vtkm\vtkvtkm\vtk-m
LocalGitDir=C:\pv\pv\.git\modules\VTK\modules\VTK-m
LocalGitStorageDir=C:\pv\pv\.git\modules\VTK\modules\VTK-m
LocalMediaDir=C:\pv\pv\.git\modules\VTK\modules\VTK-m\lfs\objects
LocalReferenceDirs=
TempDir=C:\pv\pv\.git\modules\VTK\modules\VTK-m\lfs\tmp
ConcurrentTransfers=8
TusTransfers=false
BasicTransfersOnly=false
SkipDownloadErrors=false
FetchRecentAlways=false
FetchRecentRefsDays=7
FetchRecentCommitsDays=0
FetchRecentRefsIncludeRemotes=true
PruneOffsetDays=3
PruneVerifyRemoteAlways=false
PruneVerifyUnreachableAlways=false
PruneRemoteName=origin
LfsStorageDir=C:\pv\pv\.git\modules\VTK\modules\VTK-m\lfs
AccessDownload=none
AccessUpload=none
DownloadTransfers=basic,lfs-standalone-file,ssh
UploadTransfers=basic,lfs-standalone-file,ssh
GIT_DIR=C:/pv/pv/.git/modules/VTK/modules/VTK-m
GIT_EXEC_PATH=C:/Program Files/Git/mingw64/libexec/git-core
GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough
GIT_PREFIX=
GIT_PROTOCOL_FROM_USER=0


some configs of lfs as follow:

$ git config -l|grep lfs
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true

.gitattributes file

$ cat ./.gitattributes
.git*            export-ignore
.hooks*          export-ignore

*.sh             crlf=input
*.sh.in          crlf=input
pvblot.in        crlf=input
pre-commit       crlf=input
*.patch.in       -whitespace -text

# Custom attribute to mark sources as using our C code style.
[attr]our-c-style  whitespace=tab-in-indent,-blank-at-eol  format.clang-format=9

*.c              our-c-style
*.h              our-c-style
*.cpp            our-c-style
*.cxx            our-c-style
*.hxx            our-c-style
*.txx            our-c-style
*.mm             our-c-style
*.glsl           whitespace=tab-in-indent,-blank-at-eol
*.txt            whitespace=tab-in-indent,-blank-at-eol
*.cmake          whitespace=tab-in-indent,-blank-at-eol

*.sha512         eol=lf

*.md             whitespace=tab-in-indent conflict-marker-size=30

ThirdParty/**    -format.clang-format


https info

$ git config -l|grep http
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
credential.https://dev.azure.com.usehttppath=true
remote.origin.url=https://gitlab.kitware.com/paraview/paraview.git
submodule.ThirdParty/IceT/vtkicet.url=https://gitlab.kitware.com/paraview/icet.git
submodule.ThirdParty/QtTesting/vtkqttesting.url=https://gitlab.kitware.com/paraview/qttesting.git
submodule.Utilities/VisItBridge.url=https://gitlab.kitware.com/paraview/visitbridge.git
submodule.VTK.url=https://gitlab.kitware.com/vtk/vtk.git

Seems to be related to the new security we added on our gitlab.

Can you try clone this repo directly: https://gitlab.kitware.com/vtk/vtk-m ?

no, it’s failed for cloning vtk-m repo directly

$ git clone https://gitlab.kitware.com/vtk/vtk-m.git
Cloning into 'vtk-m'...
remote: Enumerating objects: 97827, done.
remote: Counting objects: 100% (3923/3923), done.
remote: Compressing objects: 100% (1422/1422), done.
remote: Total 97827 (delta 2443), reused 3872 (delta 2427), pack-reused 93904 (from 1)
Receiving objects: 100% (97827/97827), 25.76 MiB | 212.00 KiB/s, done.
Resolving deltas: 100% (79245/79245), done.
Updating files: 100% (2787/2787), done.
Downloading data/README.md (643 B)
Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (b30a14a308f64c6fc2969e2b959d79dacdc
5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146, got 6c50c950fe88df8a3332
80beecc260775bad916c6b3266837b4068a43f6e3974 after 4132 bytes written

Errors logged to 'C:\vtk-m\vtk-m\.git\lfs\logs\20251113T172504.865892.log'.
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: data/README.md: smudge filter lfs failed
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

That’s definitely it, we will investigate.

Okay

Hi, Monsieur Mathieu.

I’m not sure when you will be able to resolve this issue. In the case of a failed git clone, I want to compile and build ParaView on Windows. Based on the following messages, can I download the corresponding submodule archives (VTK, VisItBridge, vtkicet, vtkqttesting) from GitLab, extract the submodules to the corresponding paths, i.e., the ‘path’ in the submodule, and then build according to the method described at ParaView/Documentation/dev/build.md at master · Kitware/ParaView · GitHub?

But the problem I’m concerned about is that I don’t know which commits of these submodules to download.

$ cat ./.gitmodules
[submodule "VTK"]
        path = VTK
        url = https://gitlab.kitware.com/vtk/vtk.git
        branch = paraview/release
[submodule "Utilities/VisItBridge"]
        path = Utilities/VisItBridge
        url = https://gitlab.kitware.com/paraview/visitbridge.git
[submodule "ThirdParty/IceT/vtkicet"]
        path = ThirdParty/IceT/vtkicet
        url = https://gitlab.kitware.com/paraview/icet.git
        branch = for/paraview
[submodule "ThirdParty/QtTesting/vtkqttesting"]
        path = ThirdParty/QtTesting/vtkqttesting
        url = https://gitlab.kitware.com/paraview/qttesting.git

You should be able to clone ParaView master without issues, as the git lfs project is gone.

Okay, Thank you for your reply!

I try clone the vtk-m repo directly again,But it seems that the previous problem still exists

$ git clone https://gitlab.kitware.com/vtk/vtk-m.git
Cloning into 'vtk-m'...
remote: Enumerating objects: 97827, done.
remote: Counting objects: 100% (3923/3923), done.
remote: Compressing objects: 100% (1414/1414), done.
remote: Total 97827 (delta 2441), reused 3896 (delta 2435), pack-reused 93904 (from 1)
Receiving objects: 100% (97827/97827), 25.76 MiB | 2.24 MiB/s, done.
Resolving deltas: 100% (79243/79243), done.
Updating files: 100% (2787/2787), done.
Downloading data/README.md (643 B)
Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (
b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc296
9e2b959d79dacdc5affda1d1c0e24f8e176304147146, got 69681de25cde1b35b4b447ea3dca1afc6351b851ba094967cb
6cd625614ef06d after 4129 bytes written

Errors logged to 'C:\vtk-m\vtk-m\.git\lfs\logs\20251114T161323.8822493.log'.
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: data/README.md: smudge filter lfs failed
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

and It also throws “expected OID error” after running command git submodule update --init --recursive

vtk-m is not a submodule anymore of ParaView, this is what i mean by the fact that you can clone ParaView master and submodules without issues.

Okay, I see, Thank you!

In Paraview’s master branch, I can run $ git submodule update --init --recursive without any problems. The relevant information is as follows. May I ask if this means that I have successfully cloned paraview master?

$ git submodule update --init --recursive
Submodule 'ThirdParty/IceT/vtkicet' (https://gitlab.kitware.com/paraview/icet.git) registered for pa
th 'ThirdParty/IceT/vtkicet'
Submodule 'ThirdParty/QtTesting/vtkqttesting' (https://gitlab.kitware.com/paraview/qttesting.git) re
gistered for path 'ThirdParty/QtTesting/vtkqttesting'
Submodule 'Utilities/VisItBridge' (https://gitlab.kitware.com/paraview/visitbridge.git) registered f
or path 'Utilities/VisItBridge'
Submodule 'VTK' (https://gitlab.kitware.com/vtk/vtk.git) registered for path 'VTK'
Cloning into 'C:/pv/pv/ThirdParty/IceT/vtkicet'...
Cloning into 'C:/pv/pv/ThirdParty/QtTesting/vtkqttesting'...
Cloning into 'C:/pv/pv/Utilities/VisItBridge'...
Cloning into 'C:/pv/pv/VTK'...
Submodule path 'ThirdParty/IceT/vtkicet': checked out 'a79570acf121231aea53be23fe200b740a85c23c'
Submodule path 'ThirdParty/QtTesting/vtkqttesting': checked out '9866b5f1f172f59001859c08cc9937b7cad
32153'
Submodule path 'Utilities/VisItBridge': checked out 'efac8a094a9f4e876a760b928e36ab85c785b746'
Submodule path 'VTK': checked out '23daad7b687725f22b1b5e24e3ac5f1042658c92'

If I want to build ParaView v5.13.0 in windows, I have to checkout branch to tag v5.13.0
and In this branch, It still throws “expected OID error”

This means, I can only develop paraview based on the master branch. If I want to develop based on Tagv5.13.0, I have no way.

$ git submodule update --init --recursive
Downloading data/README.md (643 B)
Error downloading object: data/README.md (b30a14a): Smudge error: Error downloading data/README.md (
b30a14a308f64c6fc2969e2b959d79dacdc5affda1d1c0e24f8e176304147146): expected OID b30a14a308f64c6fc296
9e2b959d79dacdc5affda1d1c0e24f8e176304147146, got 499006bae178175932626b7cc593997865cfcf657a0e81c969
9302624c0cf45f after 4129 bytes written

If I want to develop based on Tagv5.13.0, I have no way.

If you want to update submoduule in v5.13.0, you need to remove vtk-m for the .gitsubmodules files

Alternatively you can also:

export GIT_LFS_SKIP_SMUDGE=1

you mean .gitmodule file,
but in branch v5.13.0, there is not exist the URL of vtk-m in the .gitmodule file

$ cat ./.gitmodules
[submodule "VTK"]
        path = VTK
        url = https://gitlab.kitware.com/vtk/vtk.git
        branch = paraview/release
[submodule "Utilities/VisItBridge"]
        path = Utilities/VisItBridge
        url = https://gitlab.kitware.com/paraview/visitbridge.git
[submodule "ThirdParty/IceT/vtkicet"]
        path = ThirdParty/IceT/vtkicet
        url = https://gitlab.kitware.com/paraview/icet.git
        branch = for/paraview
[submodule "ThirdParty/QtTesting/vtkqttesting"]
        path = ThirdParty/QtTesting/vtkqttesting
        url = https://gitlab.kitware.com/paraview/qttesting.git

Indeed, its in VTK/.gitmodules

This is probably the easiest solution. You don’t have to monkey with the git configuration files, and skipping the LFS files should be OK even if you build VTK-m as part of ParaView.

1 Like

Okay, Merci! Monsieur Mathieu

1 Like

yes, I run git lfs install --skip-smudge firstly, and than clone the submodule, It’s also working.

$ git submodule update --init --recursive
Submodule 'ThirdParty/IceT/vtkicet' (https://gitlab.kitware.com/paraview/icet.git) registered for path 'ThirdParty/IceT/vtkicet'
Submodule 'ThirdParty/QtTesting/vtkqttesting' (https://gitlab.kitware.com/paraview/qttesting.git) registered for path 'ThirdParty/QtT
esting/vtkqttesting'
Submodule 'Utilities/VisItBridge' (https://gitlab.kitware.com/paraview/visitbridge.git) registered for path 'Utilities/VisItBridge'
Submodule 'VTK' (https://gitlab.kitware.com/vtk/vtk.git) registered for path 'VTK'
Cloning into 'C:/pv5/paraview/ThirdParty/IceT/vtkicet'...
Cloning into 'C:/pv5/paraview/ThirdParty/QtTesting/vtkqttesting'...
Cloning into 'C:/pv5/paraview/Utilities/VisItBridge'...
Cloning into 'C:/pv5/paraview/VTK'...
Submodule path 'ThirdParty/IceT/vtkicet': checked out '32816fe5592de3be664da6f8466a546f221d8532'
Submodule path 'ThirdParty/QtTesting/vtkqttesting': checked out '375c33053704e2d99dda4d2e1dfc9f6f85b3e73f'
Submodule path 'Utilities/VisItBridge': checked out '093ea1dfddbb3266554ece823ae8d7dedc66eb3f'
Submodule path 'VTK': checked out 'd40d065bddbdcee9227ff673b471b2bc73232d1e'
Submodule 'VTK-m' (https://gitlab.kitware.com/vtk/vtk-m.git) registered for path 'VTK/ThirdParty/vtkm/vtkvtkm/vtk-m'
Cloning into 'C:/pv5/paraview/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m'...
Submodule path 'VTK/ThirdParty/vtkm/vtkvtkm/vtk-m': checked out '3c9249871a5458cac01bbfe83307232aadd6bed5'