Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
* [lttng-dev] Build and test LTTng on Travis CI
@ 2013-11-25 15:21 Zifei Tong
  2013-11-26 15:52 ` David Goulet
  0 siblings, 1 reply; 3+ messages in thread
From: Zifei Tong @ 2013-11-25 15:21 UTC (permalink / raw)


Hi,

I just made a travis script [1] to build and test LTTng on Travis CI.
I think this might be useful in case you work on your own lttng fork
and want to have a CI system to check your commits.

The lttng test suite runs good with gcc on Travis CI [2], with minor
changes [4] with respect to bug #666 [5] and the 50 minutes build time
limit of Travis CI.

However for clang build [3], the unit tests won't pass. And I can
confirm this failure on my own machine. I've created #697 [6] on bug
tracker with full backtraces.

Thanks !

[1] https://raw.github.com/5kg/lttng-tools/travis-ci/.travis.yml
[2] https://travis-ci.org/5kg/lttng-tools/jobs/14490911
[3] https://travis-ci.org/5kg/lttng-tools/jobs/14490912
[4] https://github.com/5kg/lttng-tools/commit/afad46a2e7497e7dd5101f170df278f8ded3a1f7
[5] https://bugs.lttng.org/issues/666
[6] https://bugs.lttng.org/issues/697
--
Best Regards,
??? (Zifei Tong)



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [lttng-dev] Build and test LTTng on Travis CI
  2013-11-25 15:21 [lttng-dev] Build and test LTTng on Travis CI Zifei Tong
@ 2013-11-26 15:52 ` David Goulet
  2013-11-27 13:52   ` Zifei Tong
  0 siblings, 1 reply; 3+ messages in thread
From: David Goulet @ 2013-11-26 15:52 UTC (permalink / raw)


Hi Zifei,

On 25 Nov (23:21:30), Zifei Tong wrote:
> Hi,
> 
> I just made a travis script [1] to build and test LTTng on Travis CI.
> I think this might be useful in case you work on your own lttng fork
> and want to have a CI system to check your commits.
> 
> The lttng test suite runs good with gcc on Travis CI [2], with minor
> changes [4] with respect to bug #666 [5] and the 50 minutes build time
> limit of Travis CI.
> 
> However for clang build [3], the unit tests won't pass. And I can
> confirm this failure on my own machine. I've created #697 [6] on bug
> tracker with full backtraces.

I've pushed a travis file upstream in lttng-tools based on your version
[1] and I'm currently using it quite a bit with my development branch so
big thanks for that!

I've fixed most of the clang compiler issues, just need to investiguate
#697 [6] for the travis' test to succeed.

Bug 666 [5] is also fixed now so you don't need a custom patch for
travis-ci.org. A fast and a long UST snapshot tests were added where the
"make check" runs the fast one (only 10 snapshots in the loop version
the 1000 for the long).

Again, thank you! Cheers!
David

> 
> Thanks !
> 
> [1] https://raw.github.com/5kg/lttng-tools/travis-ci/.travis.yml
> [2] https://travis-ci.org/5kg/lttng-tools/jobs/14490911
> [3] https://travis-ci.org/5kg/lttng-tools/jobs/14490912
> [4] https://github.com/5kg/lttng-tools/commit/afad46a2e7497e7dd5101f170df278f8ded3a1f7
> [5] https://bugs.lttng.org/issues/666
> [6] https://bugs.lttng.org/issues/697
> --
> Best Regards,
> ??? (Zifei Tong)
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: Digital signature
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20131126/ed5fb37e/attachment.pgp>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [lttng-dev] Build and test LTTng on Travis CI
  2013-11-26 15:52 ` David Goulet
@ 2013-11-27 13:52   ` Zifei Tong
  0 siblings, 0 replies; 3+ messages in thread
From: Zifei Tong @ 2013-11-27 13:52 UTC (permalink / raw)


Hi David,

I am glad that the travis configuration got merged so quickly and it
does help :)

Here is something I found for the clang issue #697.

tl;dr, following is a *SILLY* patch for the issue:

diff --git a/src/common/hashtable/rculfhash.h b/src/common/hashtable/rculfhash.h
index 17cf6db..601ad98 100644
--- a/src/common/hashtable/rculfhash.h
+++ b/src/common/hashtable/rculfhash.h
@@ -458,7 +458,7 @@ void cds_lfht_resize(struct cds_lfht *ht, unsigned
long new_size);
        for (cds_lfht_first(ht, iter),                                  \
                        pos = caa_container_of(cds_lfht_iter_get_node(iter), \
                                        __typeof__(*(pos)), member);    \
-               &(pos)->member != NULL;                                 \
+               &(pos)->member == 42;                                   \
                cds_lfht_next(ht, iter),                                \
                        pos = caa_container_of(cds_lfht_iter_get_node(iter), \
                                        __typeof__(*(pos)), member))

With that patch, all unit tests passed even compiled with clang -O2.

I seems that clang will optimize out the "&(pos)->member != NULL" check.

Asm code with `clang -O2`
0000000000413c00 <snapshot_destroy>:
  413c00:	41 57                	push   %r15
  413c02:	41 56                	push   %r14
  413c04:	41 54                	push   %r12
  413c06:	53                   	push   %rbx
  413c07:	48 83 ec 18          	sub    $0x18,%rsp
  413c0b:	49 89 ff             	mov    %rdi,%r15
  413c0e:	4d 85 ff             	test   %r15,%r15
  413c11:	74 64                	je     413c77 <snapshot_destroy+0x77>
  413c13:	e8 f8 05 ff ff       	callq  404210 <rcu_read_lock_memb at plt>
  413c18:	49 8b 47 18          	mov    0x18(%r15),%rax
  413c1c:	48 8b 38             	mov    (%rax),%rdi
  413c1f:	4c 8d 74 24 08       	lea    0x8(%rsp),%r14
  413c24:	4c 89 f6             	mov    %r14,%rsi
  413c27:	e8 c4 05 ff ff       	callq  4041f0 <lttng_cds_lfht_first at plt>
  413c2c:	eb 19                	jmp    413c47 <snapshot_destroy+0x47>
  413c2e:	66 90                	xchg   %ax,%ax
  413c30:	4c 89 e7             	mov    %r12,%rdi
  413c33:	e8 d8 04 ff ff       	callq  404110 <free at plt>
  413c38:	49 8b 47 18          	mov    0x18(%r15),%rax
  413c3c:	48 8b 38             	mov    (%rax),%rdi
  413c3f:	4c 89 f6             	mov    %r14,%rsi
  413c42:	e8 b9 05 ff ff       	callq  404200 <lttng_cds_lfht_next at plt>
  413c47:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
  413c4c:	4c 8d a3 c0 fe ff ff 	lea    -0x140(%rbx),%r12
  413c53:	4c 89 ff             	mov    %r15,%rdi
  413c56:	4c 89 e6             	mov    %r12,%rsi
  413c59:	e8 12 fc ff ff       	callq  413870 <snapshot_delete_output>
  413c5e:	48 8b 7b d8          	mov    -0x28(%rbx),%rdi
  413c62:	48 85 ff             	test   %rdi,%rdi
  413c65:	74 c9                	je     413c30 <snapshot_destroy+0x30>
  413c67:	e8 a4 6b ff ff       	callq  40a810
<consumer_output_send_destroy_relayd>
  413c6c:	48 8b 7b d8          	mov    -0x28(%rbx),%rdi
  413c70:	e8 2b 72 ff ff       	callq  40aea0 <consumer_destroy_output>
  413c75:	eb b9                	jmp    413c30 <snapshot_destroy+0x30>
  413c77:	bf 55 86 43 00       	mov    $0x438655,%edi
  413c7c:	be 03 d4 43 00       	mov    $0x43d403,%esi
  413c81:	ba 3b 01 00 00       	mov    $0x13b,%edx
  413c86:	b9 22 d6 43 00       	mov    $0x43d622,%ecx
  413c8b:	e8 50 04 ff ff       	callq  4040e0 <__assert_fail at plt>

Asm code with `gcc -O2`:
00000000004179e0 <snapshot_destroy>:
  4179e0:	55                   	push   %rbp
  4179e1:	48 89 fd             	mov    %rdi,%rbp
  4179e4:	53                   	push   %rbx
  4179e5:	48 83 ec 18          	sub    $0x18,%rsp
  4179e9:	48 85 ff             	test   %rdi,%rdi
  4179ec:	74 68                	je     417a56 <snapshot_destroy+0x76>
  4179ee:	e8 0d c6 fe ff       	callq  404000 <rcu_read_lock_memb at plt>
  4179f3:	48 8b 45 18          	mov    0x18(%rbp),%rax
  4179f7:	48 89 e6             	mov    %rsp,%rsi
  4179fa:	48 8b 38             	mov    (%rax),%rdi
  4179fd:	e8 ae c8 fe ff       	callq  4042b0 <lttng_cds_lfht_first at plt>
  417a02:	48 8b 04 24          	mov    (%rsp),%rax
  417a06:	48 85 c0             	test   %rax,%rax
<------------------ null pointer check here
  417a09:	48 8d 98 c0 fe ff ff 	lea    -0x140(%rax),%rbx
  417a10:	74 38                	je     417a4a <snapshot_destroy+0x6a>
  417a12:	66 0f 1f 44 00 00    	nopw   0x0(%rax,%rax,1)
  417a18:	48 89 de             	mov    %rbx,%rsi
  417a1b:	48 89 ef             	mov    %rbp,%rdi
  417a1e:	e8 2d fc ff ff       	callq  417650 <snapshot_delete_output>
  417a23:	48 89 df             	mov    %rbx,%rdi
  417a26:	e8 75 fd ff ff       	callq  4177a0 <snapshot_output_destroy>
  417a2b:	48 8b 45 18          	mov    0x18(%rbp),%rax
  417a2f:	48 89 e6             	mov    %rsp,%rsi
  417a32:	48 8b 38             	mov    (%rax),%rdi
  417a35:	e8 26 c3 fe ff       	callq  403d60 <lttng_cds_lfht_next at plt>
  417a3a:	48 8b 04 24          	mov    (%rsp),%rax
  417a3e:	48 85 c0             	test   %rax,%rax
  417a41:	48 8d 98 c0 fe ff ff 	lea    -0x140(%rax),%rbx
  417a48:	75 ce                	jne    417a18 <snapshot_destroy+0x38>
  417a4a:	e8 61 ca fe ff       	callq  4044b0 <rcu_read_unlock_memb at plt>
  417a4f:	48 83 c4 18          	add    $0x18,%rsp
  417a53:	5b                   	pop    %rbx
  417a54:	5d                   	pop    %rbp
  417a55:	c3                   	retq
  417a56:	b9 a0 02 44 00       	mov    $0x4402a0,%ecx
  417a5b:	ba 3b 01 00 00       	mov    $0x13b,%edx
  417a60:	be 12 02 44 00       	mov    $0x440212,%esi
  417a65:	bf 39 64 44 00       	mov    $0x446439,%edi
  417a6a:	e8 31 c5 fe ff       	callq  403fa0 <__assert_fail at plt>
  417a6f:	90                   	nop

I did not see any null pointer check in clang's code.

There is a '-fno-delete-null-pointer-checks' flag in gcc, however
clang does not support it, see
http://llvm.org/bugs/show_bug.cgi?id=9251 .

Hope my rough analysis helps.

Thanks!
--
Best Regards,
??? (Zifei Tong)


On Tue, Nov 26, 2013 at 11:52 PM, David Goulet <dgoulet at efficios.com> wrote:
> Hi Zifei,
>
> On 25 Nov (23:21:30), Zifei Tong wrote:
>> Hi,
>>
>> I just made a travis script [1] to build and test LTTng on Travis CI.
>> I think this might be useful in case you work on your own lttng fork
>> and want to have a CI system to check your commits.
>>
>> The lttng test suite runs good with gcc on Travis CI [2], with minor
>> changes [4] with respect to bug #666 [5] and the 50 minutes build time
>> limit of Travis CI.
>>
>> However for clang build [3], the unit tests won't pass. And I can
>> confirm this failure on my own machine. I've created #697 [6] on bug
>> tracker with full backtraces.
>
> I've pushed a travis file upstream in lttng-tools based on your version
> [1] and I'm currently using it quite a bit with my development branch so
> big thanks for that!
>
> I've fixed most of the clang compiler issues, just need to investiguate
> #697 [6] for the travis' test to succeed.
>
> Bug 666 [5] is also fixed now so you don't need a custom patch for
> travis-ci.org. A fast and a long UST snapshot tests were added where the
> "make check" runs the fast one (only 10 snapshots in the loop version
> the 1000 for the long).
>
> Again, thank you! Cheers!
> David
>
>>
>> Thanks !
>>
>> [1] https://raw.github.com/5kg/lttng-tools/travis-ci/.travis.yml
>> [2] https://travis-ci.org/5kg/lttng-tools/jobs/14490911
>> [3] https://travis-ci.org/5kg/lttng-tools/jobs/14490912
>> [4] https://github.com/5kg/lttng-tools/commit/afad46a2e7497e7dd5101f170df278f8ded3a1f7
>> [5] https://bugs.lttng.org/issues/666
>> [6] https://bugs.lttng.org/issues/697
>> --
>> Best Regards,
>> ??? (Zifei Tong)
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev


On 11/26/13, David Goulet <dgoulet at efficios.com> wrote:
> Hi Zifei,
>
> On 25 Nov (23:21:30), Zifei Tong wrote:
>> Hi,
>>
>> I just made a travis script [1] to build and test LTTng on Travis CI.
>> I think this might be useful in case you work on your own lttng fork
>> and want to have a CI system to check your commits.
>>
>> The lttng test suite runs good with gcc on Travis CI [2], with minor
>> changes [4] with respect to bug #666 [5] and the 50 minutes build time
>> limit of Travis CI.
>>
>> However for clang build [3], the unit tests won't pass. And I can
>> confirm this failure on my own machine. I've created #697 [6] on bug
>> tracker with full backtraces.
>
> I've pushed a travis file upstream in lttng-tools based on your version
> [1] and I'm currently using it quite a bit with my development branch so
> big thanks for that!
>
> I've fixed most of the clang compiler issues, just need to investiguate
> #697 [6] for the travis' test to succeed.
>
> Bug 666 [5] is also fixed now so you don't need a custom patch for
> travis-ci.org. A fast and a long UST snapshot tests were added where the
> "make check" runs the fast one (only 10 snapshots in the loop version
> the 1000 for the long).
>
> Again, thank you! Cheers!
> David
>
>>
>> Thanks !
>>
>> [1] https://raw.github.com/5kg/lttng-tools/travis-ci/.travis.yml
>> [2] https://travis-ci.org/5kg/lttng-tools/jobs/14490911
>> [3] https://travis-ci.org/5kg/lttng-tools/jobs/14490912
>> [4]
>> https://github.com/5kg/lttng-tools/commit/afad46a2e7497e7dd5101f170df278f8ded3a1f7
>> [5] https://bugs.lttng.org/issues/666
>> [6] https://bugs.lttng.org/issues/697
>> --
>> Best Regards,
>> ??? (Zifei Tong)
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>


-- 
--
Best Regards,
??? (Zifei Tong)
College of Computer Science and Technology, Zhejiang University

soariez at gmail.com / tongzifei at zju.edu.cn



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-11-27 13:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-25 15:21 [lttng-dev] Build and test LTTng on Travis CI Zifei Tong
2013-11-26 15:52 ` David Goulet
2013-11-27 13:52   ` Zifei Tong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox