Dll bug isolation
From ReactOS
Contents |
Aim:
Here the idea is to provide easy ways for users to report additional information on bugs they have detected, I mean application which doesnot work on ReactOS.
When some bugs comes from system, other ones comes from DLL, but the Bugzilla bug description does not described which is the bugged DLL. Availability of such an information could help testing process. For instance, when a bug is corrected in some DLL (such as MSVCRT.DLL), then, all bugs related to this DLL might be retested.
With the imported functions list of each DLL used, by each DLL and exe programs, it should be possible to have a list of potentially bugged functions within this DLL.
Moreover, everybody might contribute to such information, even people without any debugging skills.
Then people who want to correct the bug have some clue on where it comes from.
How To:
To know which is the bugged DLL, the concept is to reproduce the bug on the same ReactOS system where the bug can be reproduced, and then reproduce when only one DLL has been replaced by a Microsoft compatible DLL.
If the bug can be reproduced with this compatible DLL, then the bug does not come from this DLL, but from another one.
If the bug can not be reproduced with this compatible DLL, then the bug does come from the ReactOS version of this DLL, and the concerned DLL could be described in bug report.
Legal issues:
Might be that the use of Microsoft compatible DLL, on ReactOS, for testing compatibility purpose might be subject to legal restriction in some countries. This point should be clarified for each country.
I believe such a thing legal in countries such as France.
Other usefull informations:
The list of function used within this DLL might be useful.
Possible evolutions:
ReactOS should give the possibility to have several version of the same DLL installed, and to choose which one to use at boot time.
Some script encapsulating a tool such as objdump, should give which functions are imported from a given DLL.
Some feature should allow to trace (for basic types such as char, int, long, float and so on) which are input and output of function from one DLL and one process, as ltrace or strace does on linux. This would permit compare how some ReactOS DLL is compatible with the non ReactOS DLL.

