Page MenuHomePhabricator

omjavaid (Muhammad Omair Javaid)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 13 2015, 4:38 PM (253 w, 2 d)

Recent Activity

Sun, Jan 12

omjavaid accepted D63540: Fix lookup of symbols with the same address range but different binding.

This doesnt cause any regressions on 32-bit arm testsuite. Tested on Ubuntu Xenial and Bionic 32bit arm host docker container. I hope this fixes all the redhat issues as well. Thank you so much Jan for all the effort on this and Thanks to Pavel for the reviews and assistance.

Sun, Jan 12, 4:42 PM · Restricted Project, Restricted Project

Mon, Jan 6

omjavaid created D72251: [RFC] Support SVE registers access on AArch64 Linux.
Mon, Jan 6, 3:50 AM · Restricted Project

Fri, Dec 27

omjavaid committed rGe25e3d758501: [lldb] Silent random xpass on aarch64-linux buildbot (authored by omjavaid).
[lldb] Silent random xpass on aarch64-linux buildbot
Fri, Dec 27, 4:08 AM

Mon, Dec 23

omjavaid added a comment to D63540: Fix lookup of symbols with the same address range but different binding.

Some new observations:

Mon, Dec 23, 1:22 PM · Restricted Project, Restricted Project

Dec 20 2019

omjavaid added a comment to D63540: Fix lookup of symbols with the same address range but different binding.

Some new information below:

Dec 20 2019, 1:25 PM · Restricted Project, Restricted Project

Dec 17 2019

omjavaid added a comment to D71498: Fix ARM32 inferior calls.

As I am reading this, I just wanted to send out a note of something else that can cause crashes in ARM/Thumb code. For anyone working with ARM/Thumb on systems that don't use the ARM and Thumb BKPT instruction when setting software breakpoints (like all lldb linux and android flavors IIRC): if you try to overwrite a 32 bit thumb instruction that is a conditional instruction in a Thumb IT instruction with a 16 bit trap or illegal instruction you can crash your program. The issue arises for code like:

0x1000: xx xx         ITTTEE
0x1002: 00 11 22 33   32 bit thumb instruction (if condition)
0x1006: 44 55 66 77   32 bit thumb instruction (if condition)
0x100a: 88 99 aa bb   32 bit thumb instruction (else condition) 
0x100e: cc dd ee ff   32 bit thumb instruction (else condition)

If you try to set a breakpoint at any of the instructions in [0x1002-0x100e) using a 16 bit trap or illegal instruction (I use "bb bb" below for this trap for example purposes), you change the size of the instructions and which instructions are conditional. If we try to write "bb bb" to 0x1002 we now have:

0x1000: xx xx         ITTTEE
0x1002: bb bb         (if condition) the first conditional instruction is now 16 bit instead of 32 bit
0x1004: 22 33 44 55   (if condition) this has the last half of the previous instruction 
0x1008: 66 77 88 99   (else condition) this has the last half of the previous instruction 
0x100c: aa bb         (else condition) this has the last half of the previous instruction 
0x100e: cc dd ee ff   32 bit thumb instruction (NOT conditional anymore)

This will work if using the BKPT instruction only. Sorry for the noise if lldb-server is already using the BKPT instruction. But I just wanted to throw this out there in case this issue if affecting anyone.

Dec 17 2019, 1:16 AM · Restricted Project

Dec 16 2019

omjavaid added a comment to D71498: Fix ARM32 inferior calls.

Symbols sizes are being zeroed out

Dec 16 2019, 4:55 AM · Restricted Project
omjavaid added a comment to D71498: Fix ARM32 inferior calls.

This issue is being caused by wrong address being written to memory somewhere while single stepping though i have reached the exact problem but the logs seem to suggest it.

Dec 16 2019, 3:26 AM · Restricted Project
omjavaid added a comment to D71498: Fix ARM32 inferior calls.

I still seem to get the same issue after applying this patch and D63540.

Dec 16 2019, 2:48 AM · Restricted Project
omjavaid added a comment to D63540: Fix lookup of symbols with the same address range but different binding.

@jankratochvil I have verified both D71498 and D71514. They do not fix the issues introduced by D63540.

Dec 16 2019, 1:27 AM · Restricted Project, Restricted Project

Dec 12 2019

omjavaid committed rG5536c62f3c35: [lldb] Remove xpasses after pr44037 fix committed (authored by omjavaid).
[lldb] Remove xpasses after pr44037 fix committed
Dec 12 2019, 11:38 PM

Dec 9 2019

omjavaid committed rG0964733bae2d: [lldb] Remove Xfail decorators from steadily passing tests (authored by omjavaid).
[lldb] Remove Xfail decorators from steadily passing tests
Dec 9 2019, 6:13 AM
omjavaid committed rG7d175cf504bc: [lldb] Xfail TestCallOverriddenMethod.py for aarch64/linux (authored by omjavaid).
[lldb] Xfail TestCallOverriddenMethod.py for aarch64/linux
Dec 9 2019, 3:43 AM

Dec 6 2019

omjavaid committed rGb6f9d7b8fb2e: Cleanup and speedup NativeRegisterContextLinux_arm64 (authored by omjavaid).
Cleanup and speedup NativeRegisterContextLinux_arm64
Dec 6 2019, 9:25 AM
omjavaid closed D69371: [ARM64] Cleanup and speedup NativeRegisterContextLinux_arm64.
Dec 6 2019, 9:25 AM · Restricted Project

Dec 5 2019

omjavaid updated the diff for D69371: [ARM64] Cleanup and speedup NativeRegisterContextLinux_arm64.

I have updated this patch after incorporating previous suggestions like moving InvalidateAllRegisters declaration to NativeRegisterContextLinux and also relocated calls to InvalidateAllRegisters from NativeProcessLinux to NativeThreadLinux. We now call InvalidateAllRegisters just before we resume or single step via ptrace. Other than that on any register write register will be be invalidated by WriteGPR and WriteFPR as was happening previously. We dont really need a invalidate on detach because thread wont exist after that so I have removed it InvalidateAllRegisters which was being called at detach.

Dec 5 2019, 11:40 PM · Restricted Project
omjavaid committed rG8b8185bb1b45: Avoid triple corruption while merging core info (authored by omjavaid).
Avoid triple corruption while merging core info
Dec 5 2019, 12:15 AM
omjavaid closed D70155: [LLDB] Avoid triple corruption while merging core info from platform and target triples.
Dec 5 2019, 12:15 AM · Restricted Project

Dec 4 2019

omjavaid added a project to D70155: [LLDB] Avoid triple corruption while merging core info from platform and target triples: Restricted Project.
Dec 4 2019, 11:06 PM · Restricted Project
omjavaid added a comment to D70155: [LLDB] Avoid triple corruption while merging core info from platform and target triples.

Any comments or LGTM?

Dec 4 2019, 2:44 AM · Restricted Project

Dec 3 2019

omjavaid added a comment to D63540: Fix lookup of symbols with the same address range but different binding.

Hi Jan,

Dec 3 2019, 2:48 AM · Restricted Project, Restricted Project

Nov 28 2019

omjavaid updated the diff for D69371: [ARM64] Cleanup and speedup NativeRegisterContextLinux_arm64.

Sorry for late response on this. I got side tracked into other issues and wanted performance testing before writing an update.

Nov 28 2019, 5:01 AM · Restricted Project

Nov 25 2019

omjavaid requested changes to D65410: [PassManager] First Pass implementation at -O1 pass pipeline.
Nov 25 2019, 8:47 PM · Restricted Project, Restricted Project, Restricted Project
omjavaid added a reviewer for D65410: [PassManager] First Pass implementation at -O1 pass pipeline: omjavaid.
Nov 25 2019, 8:42 PM · Restricted Project, Restricted Project, Restricted Project
omjavaid reopened D65410: [PassManager] First Pass implementation at -O1 pass pipeline.

Re-opening this because I have reverted the commit due to failures seen on LLDB AArch64 buildbot with this commit.

Nov 25 2019, 8:42 PM · Restricted Project, Restricted Project, Restricted Project
omjavaid committed rGc9ddb02659e3: Revert "As a follow-up to my initial mail to llvm-dev here's a first pass at… (authored by omjavaid).
Revert "As a follow-up to my initial mail to llvm-dev here's a first pass at…
Nov 25 2019, 8:38 PM
omjavaid added a reverting change for rG8ff85ed905a7: As a follow-up to my initial mail to llvm-dev here's a first pass at the O1…: rGc9ddb02659e3: Revert "As a follow-up to my initial mail to llvm-dev here's a first pass at….
Nov 25 2019, 8:38 PM

Nov 18 2019

omjavaid updated the diff for D70155: [LLDB] Avoid triple corruption while merging core info from platform and target triples.

Added a unittest as suggested by @labath.

Nov 18 2019, 9:22 PM · Restricted Project
omjavaid accepted D70381: Mark PR44037 tests as XFAIL on AArch64 Linux dwo.

Thanks rovka.

Nov 18 2019, 3:31 PM · Restricted Project

Nov 14 2019

omjavaid added a comment to D63540: Fix lookup of symbols with the same address range but different binding.

It is still the same (no arm32 regression) with 16bdcc809c72c639a2888b6b859dca88453e3c28 and this patch reapplied.

Nov 14 2019, 1:28 AM · Restricted Project, Restricted Project
omjavaid committed rGf9f30f2ecba5: [LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules (authored by omjavaid).
[LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules
Nov 14 2019, 1:00 AM
omjavaid closed D70154: [LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules.
Nov 14 2019, 1:00 AM · Restricted Project
omjavaid added a comment to D70154: [LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules.

It looks like you're replacing everything with tabs. I suppose that's fine, as that is the prevalent local convention, but it might be better to go for spaces, as we don't use tabs anywhere else.

Nov 14 2019, 12:50 AM · Restricted Project

Nov 12 2019

omjavaid created D70155: [LLDB] Avoid triple corruption while merging core info from platform and target triples.
Nov 12 2019, 6:17 PM · Restricted Project
omjavaid created D70154: [LLDB] Fix whitespace/tabs mismatch in lldbsuite Makefile.rules.
Nov 12 2019, 5:59 PM · Restricted Project
omjavaid committed rG9b958356983a: [LLDB] Add core definition for armv8l and armv7l (authored by omjavaid).
[LLDB] Add core definition for armv8l and armv7l
Nov 12 2019, 4:45 PM
omjavaid closed D69904: [arm] Add core definition for armv8l and armv7l.
Nov 12 2019, 4:44 PM · Restricted Project
omjavaid added a comment to D69904: [arm] Add core definition for armv8l and armv7l.

I have updated the patch as suggested and will move out the triple fix and whitespace issue in separate patches. Committing remaining changes shortly.

Nov 12 2019, 4:44 PM · Restricted Project
omjavaid added a reverting change for rG3f594ed1686b: Fix lookup of symbols at the same address with no size vs. size: rG5ab44f3ec15f: Revert "Fix lookup of symbols at the same address with no size vs. size".
Nov 12 2019, 2:22 PM
omjavaid committed rG5ab44f3ec15f: Revert "Fix lookup of symbols at the same address with no size vs. size" (authored by omjavaid).
Revert "Fix lookup of symbols at the same address with no size vs. size"
Nov 12 2019, 2:22 PM
omjavaid reopened D63540: Fix lookup of symbols with the same address range but different binding.
Nov 12 2019, 6:06 AM · Restricted Project, Restricted Project
omjavaid committed rGa6c40f56aed1: Revert "Fix lookup of symbols at the same address with no size vs. size" (authored by omjavaid).
Revert "Fix lookup of symbols at the same address with no size vs. size"
Nov 12 2019, 6:05 AM
omjavaid added a reverting change for rG3f594ed1686b: Fix lookup of symbols at the same address with no size vs. size: rGa6c40f56aed1: Revert "Fix lookup of symbols at the same address with no size vs. size".
Nov 12 2019, 6:05 AM
omjavaid closed D63540: Fix lookup of symbols with the same address range but different binding.
Nov 12 2019, 6:05 AM · Restricted Project, Restricted Project
omjavaid committed rZORG353012a742ef: Update LLVM_LIT_ARGS for LLDB Arm Linux bots (authored by omjavaid).
Update LLVM_LIT_ARGS for LLDB Arm Linux bots
Nov 12 2019, 4:37 AM

Nov 10 2019

omjavaid committed rZORGa4397a96927e: Fix LLVM_LIT_ARGS for LLDB Arm/AArch64 builder (authored by omjavaid).
Fix LLVM_LIT_ARGS for LLDB Arm/AArch64 builder
Nov 10 2019, 2:29 PM

Nov 8 2019

omjavaid requested changes to D63540: Fix lookup of symbols with the same address range but different binding.
Nov 8 2019, 6:15 AM · Restricted Project, Restricted Project
omjavaid reopened D63540: Fix lookup of symbols with the same address range but different binding.

Hi Jan,

Nov 8 2019, 6:15 AM · Restricted Project, Restricted Project

Nov 6 2019

omjavaid created D69904: [arm] Add core definition for armv8l and armv7l.
Nov 6 2019, 9:40 AM · Restricted Project

Oct 25 2019

omjavaid added a comment to D69371: [ARM64] Cleanup and speedup NativeRegisterContextLinux_arm64.

We ll be dealing with Linux user mode and mostly aarch64 data registers except for cpsr, fpsr and fpcr. I think we should be fine but let me confirm this again from documentation.

Oct 25 2019, 4:19 AM · Restricted Project

Oct 24 2019

omjavaid created D69371: [ARM64] Cleanup and speedup NativeRegisterContextLinux_arm64.
Oct 24 2019, 2:32 AM · Restricted Project

Oct 21 2019

omjavaid accepted D68783: [AArch64][DebugInfo] Do not recompute CalleeSavedStackSize (Take 2).

This corrects LLDB regressions.
LGTM.

Oct 21 2019, 1:19 AM · Restricted Project

Oct 16 2019

omjavaid added a comment to D68783: [AArch64][DebugInfo] Do not recompute CalleeSavedStackSize (Take 2).

This revision does not fix LLDB regression on AArch64.

http://lab.llvm.org:8014/builders/lldb-aarch64-ubuntu

All tests in functionalities/thread/concurrent_events/* category still failing.

Correct, those tests are fixed by D66935. That fix was reverted because of a failure with msan on test/DebugInfo/AArch64/asan-stack-vars.mir and test/DebugInfo/AArch64/compiler-gen-bbs-livedebugvalues.mir, which this patch intends to fix. I kept the fixes separate to make them easier to review. Do you want me to merge the two patches?

Oct 16 2019, 12:35 AM · Restricted Project

Oct 15 2019

omjavaid requested changes to D68783: [AArch64][DebugInfo] Do not recompute CalleeSavedStackSize (Take 2).

This revision does not fix LLDB regression on AArch64.

Oct 15 2019, 12:36 AM · Restricted Project

Oct 7 2019

omjavaid reopened D66935: [AArch64][DebugInfo] Do not recompute CalleeSavedStackSize.

This change was reverted and hence causes LLDB AArch64 test failures again.

Oct 7 2019, 9:31 PM · Restricted Project

Sep 2 2019

omjavaid committed rG1da33fd4eff0: [ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array (authored by omjavaid).
[ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array
Sep 2 2019, 4:53 AM
omjavaid committed rL370644: [ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array.
[ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array
Sep 2 2019, 4:52 AM
omjavaid closed D66934: [ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array.
Sep 2 2019, 4:52 AM · Restricted Project
omjavaid added a comment to D66934: [ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array.

Thanks @clayborg suggestions noted and will be fixed in committed patch.

Sep 2 2019, 4:22 AM · Restricted Project

Aug 29 2019

omjavaid created D66934: [ARM64] Simplify RegisterInfos_arm64.h with macro based RegisterInfo array.
Aug 29 2019, 3:22 AM · Restricted Project

Aug 26 2019

omjavaid reopened D65653: [AArch64] Change location of frame-record within callee-save area..

This rev breaks LLDB for AArch64. functionalities/thread/concurrent_events/* tests are failing after r368987.

Aug 26 2019, 12:52 PM · Restricted Project

Jun 18 2019

omjavaid committed rL363660: Add lit timeout for lldb arm/aarch64 ubuntu builders.
Add lit timeout for lldb arm/aarch64 ubuntu builders
Jun 18 2019, 3:59 AM
omjavaid committed rL363659: [zorg] Add lldb-arm-ubuntu builder.
[zorg] Add lldb-arm-ubuntu builder
Jun 18 2019, 3:50 AM
omjavaid closed D63441: [zorg] Add lldb-arm-ubuntu builder.
Jun 18 2019, 3:50 AM · Restricted Project

Jun 17 2019

omjavaid created D63441: [zorg] Add lldb-arm-ubuntu builder.
Jun 17 2019, 9:31 AM · Restricted Project

May 27 2019

omjavaid committed rL361787: [zorg] Add lldb-aarch64-ubuntu builder.
[zorg] Add lldb-aarch64-ubuntu builder
May 27 2019, 8:08 PM
omjavaid closed D62473: [zorg] Add lldb-aarch64-ubuntu builder.
May 27 2019, 8:08 PM · Restricted Project
omjavaid added inline comments to D62473: [zorg] Add lldb-aarch64-ubuntu builder.
May 27 2019, 3:24 AM · Restricted Project
omjavaid updated the diff for D62473: [zorg] Add lldb-aarch64-ubuntu builder.

Fixes typo in first rev.

May 27 2019, 3:24 AM · Restricted Project

May 26 2019

omjavaid created D62473: [zorg] Add lldb-aarch64-ubuntu builder.
May 26 2019, 11:39 PM · Restricted Project

May 23 2019

omjavaid added a comment to D62337: [lldb] followup fix for https://reviews.llvm.org/D62305.

This change breaks arm/aarch64 linux builds.

May 23 2019, 6:07 PM · Restricted Project

May 22 2019

omjavaid committed rG772176dad1fa: [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE… (authored by omjavaid).
[ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE…
May 22 2019, 5:47 PM
omjavaid committed rL361451: [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE….
[ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE…
May 22 2019, 5:46 PM
omjavaid committed rLLDB361451: [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE….
[ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE…
May 22 2019, 5:46 PM
omjavaid closed D62235: [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE extensions.
May 22 2019, 5:46 PM · Restricted Project
omjavaid created D62235: [ARM64][AArch64] Update disassembler attributes to ARMv8.5 ISA with SVE extensions.
May 22 2019, 12:19 AM · Restricted Project

Nov 25 2018

omjavaid accepted D54386: Disable for new Linux OS runs: upload test traces.

This was much needed. LGTM

Nov 25 2018, 11:57 AM · Restricted Project, Restricted Project

Jun 15 2017

omjavaid accepted D34199: Tweak SysV_arm64 function entry unwind plan.

LGTM

Jun 15 2017, 3:50 PM

Feb 24 2017

omjavaid committed rL296119: Hardware breakpoints for Linux on Arm/AArch64 targets.
Hardware breakpoints for Linux on Arm/AArch64 targets
Feb 24 2017, 5:39 AM
omjavaid closed D29669: Hardware breakpoints implementation for Arm/AArch64 targets by committing rL296119: Hardware breakpoints for Linux on Arm/AArch64 targets.
Feb 24 2017, 5:39 AM
omjavaid updated the diff for D29669: Hardware breakpoints implementation for Arm/AArch64 targets.

Hi I have updated diff with corrections.

Feb 24 2017, 4:00 AM

Feb 22 2017

omjavaid added inline comments to D29669: Hardware breakpoints implementation for Arm/AArch64 targets.
Feb 22 2017, 7:44 PM

Feb 20 2017

omjavaid retitled D29669: Hardware breakpoints implementation for Arm/AArch64 targets from Hardware breakpoints implementation for AArch64 targets to Hardware breakpoints implementation for Arm/AArch64 targets.
Feb 20 2017, 10:56 AM

Feb 15 2017

omjavaid updated the diff for D29669: Hardware breakpoints implementation for Arm/AArch64 targets.

This patch has following updates:

Feb 15 2017, 3:10 AM

Feb 9 2017

omjavaid added a comment to D29669: Hardware breakpoints implementation for Arm/AArch64 targets.

I would prefer to see NativeBreakpoint struct expanded to have more member variables instead of adding a new hardware breakpoint list. Then you just ask any breakpoint to enable/disable/remove itself and the structure contains all of the info we need. Keeping two lists means we have to check two lists. Let me know if any of my inline comments weren't clear?

Feb 9 2017, 3:02 AM

Feb 7 2017

omjavaid created D29669: Hardware breakpoints implementation for Arm/AArch64 targets.
Feb 7 2017, 12:10 PM

Feb 1 2017

omjavaid committed rL293850: Fix LLDB Android AArch64 GCC debug info build.
Fix LLDB Android AArch64 GCC debug info build
Feb 1 2017, 5:29 PM
omjavaid closed D29042: Fix LLDB Android AArch64 gcc debug info build by committing rL293850: Fix LLDB Android AArch64 GCC debug info build.
Feb 1 2017, 5:29 PM

Jan 31 2017

omjavaid updated the diff for D29042: Fix LLDB Android AArch64 gcc debug info build .

I have added look up for dladdr and it works for android debug info build.

Jan 31 2017, 3:55 AM

Jan 25 2017

omjavaid added a comment to D29042: Fix LLDB Android AArch64 gcc debug info build .

So I have given this a thought and have a inclination towards sticking to my first patch that was testing for following:

Jan 25 2017, 3:18 PM

Jan 24 2017

omjavaid updated the diff for D29042: Fix LLDB Android AArch64 gcc debug info build .

Guarding against HAVE_DLOPEN now. Works fine.

Jan 24 2017, 2:00 AM

Jan 23 2017

omjavaid created D29042: Fix LLDB Android AArch64 gcc debug info build .
Jan 23 2017, 11:28 AM

Jan 13 2017

omjavaid committed rL291949: Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5.
Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5
Jan 13 2017, 11:39 AM
omjavaid closed D28666: Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5 by committing rL291949: Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5.
Jan 13 2017, 11:39 AM
omjavaid retitled D28666: Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5 from to Fix TestRegisterVariables for linux arm/arm64 gcc ver > 5.
Jan 13 2017, 1:32 AM
omjavaid committed rL291889: Fix log typo in ABISysV_arm64.cpp.
Fix log typo in ABISysV_arm64.cpp
Jan 13 2017, 1:18 AM

Jan 2 2017

omjavaid committed rL290821: XFail TestNoreturnUnwind for arm targets.
XFail TestNoreturnUnwind for arm targets
Jan 2 2017, 10:51 AM

Nov 25 2016

omjavaid abandoned D24610: LLDB Arm Watchpoints: Use single hardware watchpoint slot to watch multiple bytes where possible.

There is not exact solution that satisfies all corner cases. Abandoning for now until I come up with a solution that covers us from all corners.

Nov 25 2016, 2:01 AM
omjavaid added a comment to D27124: [LLDB][MIPS] Fix TestWatchpointIter failure.

Although this patch fixes the test case in question but in theory EphemeralMode watchpoint enable/disable cycles should be independent of step-over watchpoint enable disable cycle.

Nov 25 2016, 1:42 AM

Nov 22 2016

omjavaid committed rL287631: Fix build failure on Linux and BSD by reverting r287597.
Fix build failure on Linux and BSD by reverting r287597
Nov 22 2016, 1:57 AM