gphoto / libgphoto2

The libgphoto2 camera access and control library.
GNU Lesser General Public License v2.1
1.06k stars 327 forks source link

regression in sdram capture on EOS 2000d #1061

Open msmeissn opened 3 days ago

msmeissn commented 3 days ago

Describe the bug

Canon EOS 2000D can not do SDRAM capture anymore. Reports PTP device busy.

Name the camera

Canon EOS 2000D

libgphoto2 and gphoto2 version

2.5.31.1 git

To Reproduce

msmeissn commented 3 days ago

bisects to 6a1a3fa672e25c522de13ad24ea6a39546affaa0 is the first bad commit

commit 6a1a3fa672e25c522de13ad24ea6a39546affaa0 Author: axxel awagger@gmail.com Date: Tue Oct 22 11:59:30 2024 +0200

ptp2: cleanup of find_child() and [folder|file]_list_func() functions

Those 3 functions were calling ptp_list_folder to update the object cache
and then iterating over the object cache to find the children of some
specific handle, thereby calling ptp_object_want() which could potentially
remove objects from the list they were iterating over. This was explicitly
marked as "DANGEROUS", which it was.

This patch introduces a return parameter to ptp_list_folder, to let the
caller know, which handles it found. This does two things: a) it is a
potential performance improvement and b) the caller can iterate over a
fixed list of handles, instead of a potentially changing list of objects.
This also did away with the 'retry' logic that tried to deal with this
situation.

I further removed the special fetching of the root folder entries from
the camera_init function and other places and I removed the code
duplication between file_list_func and folder_list_func.
msmeissn commented 3 days ago

hmm, does not happen al the time, so bisect is mood

msmeissn commented 1 day ago

another bisect also kind of found commit 6a1a3fa672e25c522de13ad24ea6a39546affaa0