GSOC 2017: Project Proposal

Dmitry V. Levin ldv at altlinux.org
Fri Apr 7 01:57:27 UTC 2017


On Wed, Apr 05, 2017 at 10:07:22AM +0530, sandhya bankar wrote:
> On Mon, Apr 3, 2017 at 9:43 PM, Eugene Syromiatnikov <esyr at redhat.com> wrote:
> > On Mon, Apr 03, 2017 at 09:26:59PM +0530, sandhya bankar wrote:
> >> On Mon, Apr 3, 2017 at 9:10 PM, Eugene Syromiatnikov <esyr at redhat.com> wrote:
> >> > On Mon, Apr 03, 2017 at 08:51:34PM +0530, sandhya bankar wrote:
> >> >> To deal with code coverage, I will run individual test cases to find
> >> >> out why the coverage is below 100%.
> >> >
> >> > OK, let's be more specific: what are your suggestions in regards of
> >> > increasing coverage of dm.c up to 100%?
> >>
> >> First I will check  https://codecov.io/gh/strace/strace/src/master/dm.c
> >>
> >> This will give us information about which lines are hit, lines are
> >> missed  by testcase. So according to this data, we can add more tests
> >> to hit all missed lines. On dashboard this lines highlighted by Red
> >> color so It is easy to write test cases around those lines.
> > So, how do you expect to write test that checks dm_decode_dm_target_deps
> > function, for example?
> 
> Hi,
> 
>  I have checked the test case. The test case to check
> dm_decode_dm_target_deps is already present in ioctl_dm.c.
> 
> I am suspecting that, it seems there is problem in below case
> 
> case DM_TABLE_DEPS:
>                 if (entering(tcp) || syserror(tcp))
>                       break;
>                 dm_decode_dm_target_deps(tcp, arg, ioc);
>                 break;
> 
> When we come to check the dm_decode_dm_target_deps(). The switch case
> is breaking before calling it.
> 
> I have not debug it completely but both the cases of the if()
> statement somehow becoming true and that's why we are not able to call
> the dm_decode_dm_target_deps(). (I am not sure whether It is correct
> behavior )
> 
> I did one hack to traverse the dm_decode_dm_target_deps() code path. I
> have commented the both lines of switch case as below. Now the code
> can check the dm_decode_dm_target_deps().
> 
> I know it is not the right way to fix this problem, but after more
> debugging I can find the reason and fix it.

I cannot imagine anything as remote as this.  Very much surprised to hear
this from a person with experience of patching kernel drivers.

> diff --git a/dm.c b/dm.c
> index a69077b..7e3fb53 100644
> --- a/dm.c
> +++ b/dm.c
> @@ -516,8 +518,8 @@ dm_known_ioctl(struct tcb *const tcp, const
> unsigned int code,
>                 dm_decode_dm_target_spec(tcp, arg, ioc);
>                 break;
>         case DM_TABLE_DEPS:
> -               if (entering(tcp) || syserror(tcp))
> -                       break;
> +               //if (entering(tcp) || syserror(tcp))
> +               //      break;
>                 dm_decode_dm_target_deps(tcp, arg, ioc);
>                 break;
>         case DM_LIST_DEVICES:
> 
> Please suggest on it.

The most simple way to test the exiting part of DM_TABLE_DEPS
is to run a virtual machine with a proper dm setup inside.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170407/6a9ffb2d/attachment.bin>


More information about the Strace-devel mailing list