Skip to content

Bump version to v0.2.7-beta - #96

Merged
pawelchcki merged 1 commit into
masterfrom
bump_version
Nov 1, 2018
Merged

pawelchcki merged 1 commit into
masterfrom
bump_version

Conversation

@pawelchcki

Copy link
Copy Markdown
Contributor

No description provided.

@pawelchcki
pawelchcki requested a review from chuck November 1, 2018 18:09

@labbati labbati left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 (PR title shows the wrong version number?)

@pawelchcki pawelchcki changed the title Bump version to v2.6.7-beta Bump version to v0.2.7-beta Nov 1, 2018
@pawelchcki
pawelchcki merged commit ed0ca24 into master Nov 1, 2018
@pawelchcki
pawelchcki deleted the bump_version branch November 1, 2018 18:15
@pawelchcki

Copy link
Copy Markdown
Contributor Author

@labbati Grazie mille!

Also fixed the title 😅

bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi added a commit that referenced this pull request Sep 5, 2023
Illustrating the issue:

// calling begin
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_begin
add    x8, x8, #0x6b0
blr    x8
// start of function execution
// reading string arg from execute_data constants
mov    x8, #0xe400                     // #58368
movk   x8, #0xac44, lsl #16
movk   x8, #0xaaaa, lsl #32
// storing to CV[1]
str    x8, [x27, #96]
mov    w8, #0x6                        // #6
// storing type of CV[1]
str    w8, [x27, #104]
// nothing happens, my test function is empty :-)
// calling end with 2 args
adrp   x1, 0xaaaaacad4000
add    x1, x1, #0x740
mov    x0, x27
adrp   x8, 0xaaaaacad4000
add    x8, x8, #0x7b0
str    x8, [x27]
adrp   x8, 0xaaaaab361000 <zend_observer_fcall_install+496> // zend_observer_fcall_end
add    x8, x8, #0x844
blr    x8

As one can see, with the tracing JIT, it just forcibly overrides the second arg, inlining the called function. (Which is also why we leaked our custom $context array in the LogsIntegration).
The JIT has no exit points here.

Hence, we have no choice but to forcefully disallow inlining the hooked methods where overrideArguments is used.

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
bwoebi pushed a commit that referenced this pull request Sep 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants